Đăng ký học Excel và VBA cùng GPE tháng 11 - TPHCM

Mua sách "VBA trong Excel - Cải thiện và tăng tốc" tái bản

Làm việc nhóm với excel

Thảo luận trong 'Lập Trình với Excel' bắt đầu bởi jack nt, 18 Tháng sáu 2011.

  1. jack nt

    jack nt Thành viên thường trực

    Giả sử có một nhóm cùng làm việc với một workbook. Mỗi người làm xong công việc của mình thì save và gửi cho người khác trong nhóm. Người nhận file cập nhật rồi gửi tiếp hoặc gửi trả lại cho người trong nhóm bằng email. Trong trường hợp có mạng LAN, có thể sử dụng một folder chung để lưu bản sao mới cập nhật trên đó.
    Vấn đề là làm sao có thể sử dụng đúng phiên bản mới nhất?
    Có nhiều cách làm, một cách phổ biến là mỗi lần cập nhật xong, đổi tên file, trong tên file ghi rõ tên người, thời gian cập nhật rồi gửi email cho người khác hoặc save vào folder chung… Cách làm này tạo ra rất nhiều rác và dễ lẫn lộn, không an toàn và không cho phép mọi người làm công việc một cách đồng thời.

    Đồng bộ dữ liệu Excel khi làm việc trên LAN

    Để đơn giản, xét nhóm gồm 2 người: A sử dụng Sheet1, còn B sử dụng Sheet2. (Việc phát triển thêm cho nhóm nhiều hơn 2 người, nhiều hơn 2 sheet là tự nhiên).

    Cách đồng bộ dữ liệu như sau (xem các file đính kèm: synDNT-A.xls, synDNT-B.xls, synDNT.mdb):
    Hai workbook giống hệt nhau SynDNT-A.xls (W1) và SynDNT-B.xls (W2) đều có Sheet1 và Sheet2 tương ứng giống nhau. Ký hiệu Sheet1 của W1 là SH11, Sheet2 của W1 là SH12; Sheet1 của W2 là SH21, Sheet2 của W2 là SH22.
    File SynDNT.mdb có 2 table: Sheet1 (T1) và Sheet2 (T2). (Kiểu dữ liệu của tất cả các field là Memo và Allow Zero Length = Yes).

    Dữ liệu các sheet của W1 và W2 trao đổi với nhau theo sơ đổ SH11 à T1 à SH21, từ SH22 à T2 à SH12


    Cần lưu ý là FormulaR1C1 chứ không phải là Value được trao đổi
    RS.Fields(j - 1) = SH.Cells.Item(i, j).FormulaR1C1
    SH.Cells.Item(i, j + 1).FormulaR1C1 = CStr(RS.Fields(j))

    Trong trường hợp người nhận chỉ quan tâm / chỉ được quyền nhận Value thì đổi dòng thứ nhất thành
    RS.Fields(j - 1) = SH.Cells.Item(i, j)

    A làm việc với W1 thực hiện gọi các lệnh:
    LetMDB Sheet1, "synDNT.mdb", "Sheet1" ‘SH11 à T1
    GetMDB Sheet2, "synDNT.mdb", "Sheet2" ‘T2 à SH12

    Còn B làm việc với W2 gọi các lệnh:
    LetMDB Sheet2, "synDNT.mdb", "Sheet2" ‘SH22 à T2
    GetMDB Sheet1, "synDNT.mdb", "Sheet1" ‘T1 à SH21

    Sử dụng chương trình mẫu

    Lưu file synDNT-A.xls vào PC của A, synDNT-B.xls vào PC của B, synDNT.mdb vào Server. Khai báo đường dẫn trong modMDB của 2 file excel nói trên - Hiện đang khai báo là “NULL” cần khai báo lại cho đúng với Path chứa synDNT.mdb trên Server. Số cột đang khai báo là 50, số dòng là 1000, có thể khai báo lại số cột và số dòng phù hợp với nhu cầu sử dụng, với điều kiện số cột ≤ 255 và số dòng ≤ 65536. Số lượng các field trong các table của synDNT.mdb cần phải khai báo tương ứng.
    (Để chạy thử chương trình mẫu, lưu tất cả các file trên vào cùng một folder, không sửa đổi gì)
    Bây giờ A và B cứ việc làm việc trên workbook của mình. A nhấn Ctrl-a, B nhấn Ctrl-b là có ngay dữ liệu mới nhất do người kia cập nhật.

    Mở rộng chương trình

    Giả sử có N người dùng chung một workboock có N sheet.
    Tạo N bản sao W1, W2, …, WN. Trong module modMacro của WJ của người thứ J (J = 1, 2, …, N) viết N lệnh sau:
    LetMDB SheetJ, “synDNT.mdb”, “SheetJ”
    GetMDB SheetK, “synDNT.mdb”, “SheetK” (K = 1, 2, …, J-1, J+1, …, N) ‘N-1 lệnh
    Ở đây chúng tôi giả thiết mỗi người cập nhật một sheet, nếu nhiều hơn thì tăng LetMDB và giảm GetMDB tương ứng.

    Mở rộng ứng dụng

    Trong trường hợp cần tập hợp dữ liệu từ nhiều nguồn (để làm báo cáo) thì quá trình cũng tương tự trên. Người báo cáo dùng LetMDB gửi dữ liệu về một hoặc một số file *.mdb trên Server. Người tổng hợp báo cáo có thể sử dụng Excel (dùng GetMDB để lấy dữ liệu) hoặc bất kỳ chương trình nào khác có khả năng đọc được *.mdb.

    Jack NT - maildnt@gmail.com
     

    Các file đính kèm:

  2. lego

    lego Thành viên mới

    mình cũng đang quan tâm đến ứng dụng này, nhưng mình không phải là dân IT nên có một số thuật ngữ mình không hiểu lắm, bạn có thể hướng dẫn một tí được không.
    coppy synDNT.mdb vào Server là ntn?
    Khai báo đường dẫn trong modMDB của 2 file excel ?
    đây là chương trình mẫu, nếu mình muốn ứng dụng cho công việc của mình (file dữ liệu của mình) thì sẽ phải tiến hành ntn? dữ liệu của công ty mình rất nặng, liệu có ảnh hưởng gì không?
    thank nhiu,! nếu đc bạn giúp mình qua địa chỉ email này nhé letuananhgo@yahoo.com.vn
     
  3. Nguyễn Duy Tuân

    Nguyễn Duy Tuân Nghị Hách

    Add-in A-Tools cho phép nhiều người làm việc chung với file Excel qua mạng LAN và Internet. Người sử dụng chỉ cần vài thao tác là làm được. Các bạn tham khảo bài hướng dẫn dưới đây:

     
  4. lego

    lego Thành viên mới

    khi mình cài xong a-tools bản free thì excel vẫn không hiển thị a-tool, mình đã xem hướng dẫn khắc phục lỗi này nhưng vẫn không khắc phục được, vào excel option/add-in/disabled-items thì không thấy có add-in nào, a-tools đã xuất hiện trong phần active. mình thử với bản pro vẫn không được, mình dùng excel 2007. bạn giúp mình với nhé, thanks.
     
  5. Nguyễn Duy Tuân

    Nguyễn Duy Tuân Nghị Hách

    Có thể có một add-in nào đó đã tranh chấp menu của A-Tools. Tạm thời bạn thử gỡ bỏ các add-in khác rồi mở lại Excel xem thế nào.
     
  6. lego

    lego Thành viên mới

    mình đã khắc phục thành công, thank bạn cái nha. cho mình hỏi, nếu mình dùng bản free thì sau này có bị hạn chế gì không? yêu cầu công việc của mình là khoảng 10 người cùng cập nhật dữ liệu vào một file chung, ngoài ra không có yêu cầu gì khác. mình nghe nói là bị giới hạn về thời gian và số lượng user đăng nhập.
     
  7. Nguyễn Duy Tuân

    Nguyễn Duy Tuân Nghị Hách

    Thông tin về A-Tools Free & A-Tools Pro tại đây:
    http://bluesofts.net/giai-phap-phan...-thao-va-quan-tri-du-lieu-excel-qua-mang.html
     
  8. hoanglonglangtu

    hoanglonglangtu Thành viên mới

    Mình cài Atool Free, Addin đc acctive và ko disable, các Addin khác đều off, nhưng Atool vẫn ko hiện ra trên Excel (Mình dùng excel 2007). Giúp mình với !!
     
  9. minhkiet0907

    minhkiet0907 Thành viên mới

    Cảm ơn chủ thớt nhiều lắm, mình cũng đang rất cần file này.
     

Chia sẻ trang này