CÔNG TY CỔ PHẦN BLUESOFTS

Lập trình VBA đồng bộ vùng Excel lên Google Sheets và Excel Online

 Từ một vùng trên bảng tính Excel lập trình VBA để đồng bộ dữ liệu và định dạng lên Google Sheets và Excel Online. Mã nguồn rất đơn giản.

Video hướng dẫn nhanh
 


Mã nguồn

Nếu đây là lần đầu bạn xem hướng dẫn lập trình VBA cho Google Sheets và Excel Online thì bạn nên xem trước Bài 01- Hướng dẫn lập trình với Google Sheets và Excel Online bằng Excel VBA và Add-in A-Tools 

Khi bạn lập trình VBA trong Excel tạo ra các báo cáo hoặc vùng dữ liệu, bạn muốn đẩy/đồng bộ vùng bảng tính bao gồm cả dữ liệu hoặc cả định dạng lên Google Sheets hoặc Excle Online để phục vụ cho xem báo cáo trên các thiết bị di động thì bạn hãy lập trình với thư viện của Add-in A-Tools.

Giả sử tôi có báo cáo trên bảng tính Excel như sau



Tôi lập trình VBA để đẩy toàn bộ vùng dữ liệu trên lên Google Sheets và Excel Online như sau:

Trong môi trường VBA, vào menu Tools - > References... check mục "AddinATools.dll"


 
Trong VBA, chọn VBAProject của file bạn muốn viết code, vào menu Insert - > Module (nếu muốn tạo module mới).

Code dưới đây:

Trên đầu module khai báo hằng số FileID và kiểu cloud làm việc
Private Const FileID = "https://docs.google.com/spreadsheets/d/1-o__30yfKSTRAB3vrqEo6fCnMQSXHEN8ImtE4hca4CA/edit?gid=401030668#gid=401030668" 
Private Const MyCloudType = ctGoogleDrive  ' ctOneDrive for Excel Online
Tạo thủ tục để upload range như sau:
Sub UploadRange_To_GoogleSheets_ExcelOnline() 
   Dim MyCloud As New BSCloud 
   Dim wb As BSCloudWorkbook 
   Dim ExcelRange As Range 
   On Error GoTo lbEnd 
   If Not MyCloud.Connected(MyCloudType) Then 
      If Not MyCloud.OpenAuthor(Application, MyCloudType, Application.Hwnd) Then 
         Exit Sub 
      End If 
   End If 
   Set ExcelRange = Workbooks("Ten FIle Excel").Sheets("Sheet Name").Range("A1:H32") 
   'Way 1
   'MyCloud.UploadRange Range("A1:H32"), FileID, "report", DataAndFormat
   'Way 2
   Set wb = MyCloud.Workbooks.Open(FileID) 
   wb.Sheets("report").Cells.Clear 
   wb.Sheets("report").UploadRange Range("A1:H32"), DataAndFormat 
   'Wb.Sheets("report").UploadRange Selection, DataAndFormat
lbEnd: 
   If Err <> 0 Then 
      Debug.Print "Error: " & Err.Description 
   End If 
   Set wb = Nothing 
   Set MyCloud = Nothing 
End Sub 

Hãy đảm bảo tên sheet "report" có trong Google Sheets của bạn. FileID phải tồn tại trong tài khoản Google Drive của bạn. Xem kỹ video hướng dẫn. Kết quả bạn nhận được là:


Nếu bạn muốn lập trình cho Excel Online thì chỉ cần thay giá trị của hai hằng số FileID và MyCloudType ứng với thông tin trên Excel Online của bạn là được. Ví dụ:

Private Const FileID = "https://onedrive.live.com/edit?id=11870394B81CE870!34948&resid=11870394B81CE870!34948&ithint=file%2cxlsx&wdo=2&cid=11870394b81ce870" 
'Or:
'Private Const FileID = "11870394B81CE870!34948"
Private Const MyCloudType = ctOneDrive 

Lưu ý là FileID có thể là Url hoặc ID của file trên drive.

Nếu có vướng mắc gì bạn hãy đặt câu hỏi trên group Facebook để được hỗ trợ online: https://www.facebook.com/groups/hocexcel/

Hoặc: support@bluesofts.net

Chúc các bạn thành công!

Download Add-in A-Tools để thực hành
Tác giả Nguyễn Duy Tuân