NguyenDang95
Senior Member
Với công việc thường xuyên tương tác qua lại với Google Drive, sẽ rất tiện nếu như chúng ta có thể tương tác với Google Drive một cách tự động như tải tập tin lên Google Drive, tải tập tin từ Google Drive về máy tính, chia sẻ tập tin, tạo liên kết URL chia sẻ thư mục hoặc tập tin nhất định cho người khác, v.v. Tuy vậy những thao tác này hầu như không thực hiện được trong VBA. Chúng ta vẫn có thể làm được việc này bằng cách lập trình add-in VSTO hoặc Web add-in, tuy nhiên điều này đòi hỏi kiến thức về ngôn ngữ lập trình C#, VB.Net hay Javascript/Typescript. Từ thực tế này, mình đã viết một thư viện dựa vào Drive API của Google và bổ sung thêm một số tiện ích thường dùng cho công việc để có thể lập trình được trong VBA. Tất nhiên là với việc không phải là lập trình viên (chỉ là tay ngang học code) và mình viết thư viện này căn cứ vào nhu cầu công việc hiện tại, mọi người có thể sẽ thấy thiết sót hoặc gặp lỗi không đáng có.
Tải xuống:
GoogleDriveGoogleSheetsLibraryForVBA.zip: https://1drv.ms/u/s!AmwM8BaWQzt0nLxXG3BiJZJn2rNxiw?e=QrPOTH
Tài liệu tham khảo cách cài đặt và sử dụng:
ThuVienGoogleApis.docx: https://1drv.ms/w/s!AmwM8BaWQzt0nLwfCrYcHvNHXGJ5lg?e=8lzGvM
GitHub:
https://github.com/nguyendang95/Google-Drive-and-Google-Sheets-Library-For-VBA
Ví dụ về sử dụng thư viện trong VBA:
Ví dụ 1:
Macro trong Outlook tự động tạo ra một email mới chứa đính kèm là tập tin sẽ được tải lên Google Drive.
Kết quả đạt được:
Ví dụ 2: Tải xuống tất cả các tập tin trong thư mục nhất định:
Giả sử người dùng có thư mục trên Google Drive tên là "Videos" với mã id là "11TyeTJb4LVW7sEDPGQ9joqW00Za2YbED" và muốn tải xuống tất cả các tập tin trong thư mục này về máy tính (vd: CUsers\nguye\Downloads).
Kết quả đạt được:
Cập nhật: Hiện tại mình đang mở rộng thư viện này có thể tương tác được với Google Sheets để có thêm nhiều chức năng phong phú, cho nên những thím nào quan tâm có thể mạnh dạn đề xuất với mình nhé, mình sẽ cố gắng bổ sung.
Cập nhật ngày 10/10/2022: Hiện tại mình đã bổ sung khả năng tương tác với Google Sheets với một số thuộc tính, đối tượng và phương thức như sau:
https://github.com/nguyendang95/Goo...aybkzCfyaBI3LI6lLEznwKMWZXg_eeoEFvBNR2L8BY7e0
Cập nhật ngày 12/10/2022: Bổ sung thêm một số phương thức giúp người dùng có thể làm việc với Named Range, Protected Range và tương tác với Sheet:
Cập nhật ngày 15/10/2022: Bổ sung thêm một số phương thức làm việc với vùng dữ liệu (Range) trên Google Sheets:
Tải xuống:
GoogleDriveGoogleSheetsLibraryForVBA.zip: https://1drv.ms/u/s!AmwM8BaWQzt0nLxXG3BiJZJn2rNxiw?e=QrPOTH
Tài liệu tham khảo cách cài đặt và sử dụng:
ThuVienGoogleApis.docx: https://1drv.ms/w/s!AmwM8BaWQzt0nLwfCrYcHvNHXGJ5lg?e=8lzGvM
GitHub:
https://github.com/nguyendang95/Google-Drive-and-Google-Sheets-Library-For-VBA
Ví dụ về sử dụng thư viện trong VBA:
Ví dụ 1:
Macro trong Outlook tự động tạo ra một email mới chứa đính kèm là tập tin sẽ được tải lên Google Drive.
Code:
Option Explicit
Public Sub UploadAttachmentToGoogleDrive()
Dim objDS As GoogleApis.DriveService
Dim objFile As GoogleApis.GoogleDriveFile
Dim strUploadedFileId As String
Dim strShareableLink As String
Dim objMail As Outlook.MailItem
Set objDS = New GoogleApis.DriveService
With objDS
.ClientId = "Client_Id"
.ClientSecret = "Client_Secret"
.ApplicationName = "Desktop Client"
.LoginToGoogleDrive
If .LoginStatus = GDLoginStatus_gdLoginStatusSuccess Then
strUploadedFileId = .UploadFile("C:\Users\nguye\Downloads\SeleniumBasic-2.0.9.0.exe")
If strUploadedFileId <> vbNullString Then
Set objFile = .GetFileById(strUploadedFileId)
strShareableLink = objFile.CreateShareableLink(GDPermissionType_gdPermissionTypeAnyone, GDPermissionRole_gdPermissionRoleReader)
Set objMail = Application.CreateItem(olMailItem)
With objMail
.Display
.BodyFormat = olFormatPlain
.Body = .Body & vbCrLf & "Attachment: " & objFile.Name & vbCrLf & strShareableLink
End With
Else: MsgBox "Failed to upload attachment(s) to Google Drive. Please try again.", vbInformation, "Failed to Upload Attachment(s) to Google Drive"
End If
End If
End With
Set objDS = Nothing
Set objFile = Nothing
Set objMail = Nothing
End Sub
Kết quả đạt được:
Ví dụ 2: Tải xuống tất cả các tập tin trong thư mục nhất định:
Giả sử người dùng có thư mục trên Google Drive tên là "Videos" với mã id là "11TyeTJb4LVW7sEDPGQ9joqW00Za2YbED" và muốn tải xuống tất cả các tập tin trong thư mục này về máy tính (vd: CUsers\nguye\Downloads).
Code:
Public Sub DownloadAllFilesInFolder()
Dim objDS As GoogleApis.DriveService
Dim objFile As GoogleApis.GoogleDriveFile
Dim arrFileIds() As String
Dim i As Long
Set objDS = New GoogleApis.DriveService
With objDS
.ClientId = "Client_Id
.ClientSecret = "ClientSecret"
.ApplicationName = "Desktop Client"
.LoginToGoogleDrive
If .LoginStatus = GDLoginStatus_gdLoginStatusSuccess Then
arrFileIds = .GetAllFileIdsInFolder("11TyeTJb4LVW7sEDPGQ9joqW00Za2YbED")
For i = 0 To UBound(arrFileIds)
Set objFile = .GetFileById(arrFileIds(i))
objFile.DownloadFile "C:\Users\nguye\Downloads\" & objFile.Name
Next
End If
End With
Set objDS = Nothing
Set objFile = Nothing
End Sub
Kết quả đạt được:
Cập nhật: Hiện tại mình đang mở rộng thư viện này có thể tương tác được với Google Sheets để có thêm nhiều chức năng phong phú, cho nên những thím nào quan tâm có thể mạnh dạn đề xuất với mình nhé, mình sẽ cố gắng bổ sung.
Cập nhật ngày 10/10/2022: Hiện tại mình đã bổ sung khả năng tương tác với Google Sheets với một số thuộc tính, đối tượng và phương thức như sau:
- Tạo tập tin Google Sheets mới
- Lấy dữ liệu, thiết lập, xóa giá trị của một vùng dữ liệu bất kỳ trên Google Sheets
- Tạo bộ lọc FilterView, Sort, quy tắc Conditional Format, xóa bộ lọc FilterView
- Tạo, xóa sheet, nối thêm dữ liệu vào sheet
- Tìm kiếm và thay thế theo cách thông thường, tìm kiếm và thay thế bằng Regex trong vùng dữ liệu nhất định.
https://github.com/nguyendang95/Goo...aybkzCfyaBI3LI6lLEznwKMWZXg_eeoEFvBNR2L8BY7e0
Cập nhật ngày 12/10/2022: Bổ sung thêm một số phương thức giúp người dùng có thể làm việc với Named Range, Protected Range và tương tác với Sheet:
- Tạo, xóa, thay đổi Named Range
- Tạo, xóa, thay đổi Protected Range
- Thay đổi thuộc tính của Sheet (đổi tên, ẩn/hiển thị sheet, thay đổi màu tab của sheet)
Cập nhật ngày 15/10/2022: Bổ sung thêm một số phương thức làm việc với vùng dữ liệu (Range) trên Google Sheets:
- Thao tác sao chép, cắt, dán dữ liệu
- Gộp ô, bỏ gộp ô
- Loại bỏ khoảng trắng dư thừa trong các ô của vùng dữ liệu
- Tự động điều chỉnh kích thước hàng/cột
- Di chuyển, xóa, chèn hàng/cột
Last edited: