Lập trình VBA với Google Drive, OneDrive, DropBox cho Upload-Download-Copy-Move... (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia
13/6/06
Bài viết
4,788
Được thích
10,299
Giới tính
Nam
Nghề nghiệp
Giáo viên, CEO tại Bluesofts
Lưu trữ dữ liệu lên cloud bạn thường dùng các drive phổ biến như Google Drive, OneDrive, DropBox. Nếu phần mềm viết bằng Excel VBA hay ngôn ngữ nào đó muốn truy xuất tự động lên các drive thì bạn cần phải biết lập trình. Bài viết này tôi hướng dẫn bạn lập trình với thư viện Add-in A-Tools rất dễ dàng. Tất cả các ngôn ngữ lập trình cho Windows như VBA/VB6, Delphi, C#, VB.NET, C/C++ hay các ngôn ngữ .NET đều lập trình được với Add-in A-Tools. Bài viết này tôi hướng dẫn bằng ngôn ngữ VBA.

Video hướng dẫn nhanh

Để lập trình với các drive/cloud bạn cần cài đặt Add-in A-Tools tối thiểu v10 ngày 01-03-2025.

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

Trước khi lập trình bạn cần nhúng thư viện AddinATools.DLL vào VBAProject trong file của bạn. Cách nhúng như sau.
Trong môi trường VBA, vào menu Tools - > References... check mục "AddinATools.dll"

referencesAddinATools.png

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).
Trên đầu module khai báo hằng số MyCloudType để chỉ định loại drive bạn muốn kết nối.
C#:
Private Const MyCloudType = ctGoogleDrive
'Private Const MyCloudType = ctOneDrive
'Private Const MyCloudType = ctDropBox

Tất cả mã nguồn trong bài viết này dùng chung cho cả Google Drive, OneDrive, DropBox.

Kết nối và đọc thông tin tìa khoản
C#:
Sub Drive_AccountInfo()
   Dim MyCloud As New BSCloud
   On Error GoTo lbEnd
   If Not MyCloud.Connected(MyCloudType) Then
      If Not MyCloud.OpenAuthor(Application, MyCloudType, Application.Hwnd) Then Exit Sub
   End If
   Debug.Print MyCloud.Account
   Debug.Print MyCloud.AccountDisplay
   Debug.Print MyCloud.AccountIconLink
lbEnd:
   If Err <> 0 Then
      Debug.Print "Error: " & Err.Description
   End If
   Set MyCloud = Nothing
End Sub
Sau khi chạy thủ tục trên kết quả sẽ là.

Dòng lệnh MyCloud.Connected(MyCloudType) kiểm tra đã kết nối hay chưa.
Dòng lệnh MyCloud.OpenAuthor(...) để mở màn hình hoặc website để đăng nhập và ủy quyền.

Nếu lần đầu kết nối tới drive thì xuất hiện màn hình đăng nhập tài khoản. Đây là giao diện web do hãng cloud cung cấp không phải Add-in A-Tools theo cơ chế đăng nhập và phê duyệt quyền truy cập. A-Tools không biết mật khẩu tài khoản của bạn. Quy trình này hoàn toàn do Google và Microsoft, Dropbox (những dịch vụ cloud mà bạn sử dụng) thực hiện theo giao thức OAuth 2.0 chứ không phải A-Tools tự làm nên bạn cần hiểu A-Tools không thể biết thông tin đăng nhập cũng như không thể tự ý truy cập vào dữ liệu của bạn. Hãy xem bài viết này để hiểu cặn kẽ hơn.

Tùy vào loại drive mà bạn có các màn hình đăng nhập như sau:

gdrive-login.png.aspx
onedrive-login.png.aspx
dropbox-login.png.aspx

Nếu đăng nhập thành công MyCloud nắm giữ điều khiển drive của bạn. Từ điều khiển này bạn có thể lập trình với các tập tin trên drive, lấy và đồng bộ dữ liệu với Google Sheets, Excel Online.
Các dòng lệnh sau đó bạn nhận 3 thông tin gồm: Tài khoản đăng nhập (email); Tên tài khoản; Url tải hình ảnh - avatar.

account-info.png

Mở cửa sổ để nhận thông tin tập tin trên drive

C#:
Sub Drive_OpenFileDialog()
   Dim MyCloud As New BSCloud
   Dim MyFile As BSFileInfo
   On Error GoTo lbEnd
   If Not MyCloud.Connected(MyCloudType) Then
      If Not MyCloud.OpenAuthor(Application, MyCloudType, Application.Hwnd) Then Exit Sub
   End If
   If MyCloud.FileManager.OpenFileDialog(MyFile, atUnknown, , "Title", , Application.Hwnd) Then
      MsgBox MyFile.PathOrID, vbInformation
   End If
lbEnd:
   If Err <> 0 Then
      Debug.Print "Error: " & Err.Description
   End If
   Set MyCloud = Nothing
End Sub

Cấu trúc hàm OpenFileDialog()

C#:
Function OpenFileDialog(FileInfo As BSFileInfo, [AppType As BSAppType = atUnknown], [Filters], [Title As String], [ButtonText As String], [ParentHandle]) As Boolean

Tham số:
+ FileInfo (kiểu BSFileInfo): nhận thông tin của đối tượng được chọn, khi hàm trả về TRUE.
+ AppType (kiểu BSAppType): chỉ định loại tập tin sẽ được chọn. ví dụ aiUnknow (ngầm định) là chọn được tất cả các loại tập tin; atGoogleSheet chỉ chọn loại định dạng của Google Sheets; atExcel chỉ chọn tập tin Excel.... Hãy xem thêm các hằng số trong BSAppType.
+ Filters (Variant): chuỗi mô tả cấu trúc lọc đối tượng. Có thể bỏ qua.
+ Title: (String): tiêu đề hộp thoại.
+ ButtonText (String): tên nút bấm. Có thể là một tên nào đó hoặc chuỗi JSON mô tả các thông tin của nút bấm. Có thể bỏ qua. Ví dụ:
{
"imageIndex":11,
"text":"Mở"
}

+ ParentHandle (Long/LongLong): là handle (điều khiển) của cửa sổ cha. Ví dụ Application.Hwnd. Nếu bỏ qua tham số này sẽ nhận giá trị handle của cửa sổ hiện tại.

(imageIndex là chỉ số ảnh, nhận giá trị từ 0 đến 14. Tài liệu bổ sung sau)

Hàm OpenFileDialog(...) để mở hộp thoại có toàn bộ cấu trúc và các tài nguyên lưu trên tài khoản drive của bạn. Nếu hàm trả về TRUE thì tham số FileInfo sẽ nhận giá trị của tập tin (BSFileInfo.ItemType = itFile) được chọn. Màn hình khi chạy hàm hiển thị như dưới đây (ví dụ với MyCloudType = ctGoogleDrive)

GDrive.png

Sau khi chọn nút "Open"/"Mở" hàm OpenFileDialog() trả thông tin của đối tượng chọn vào biến MyFile có kiểu BSFileInfo.

BSFileInfo là kiểu Type gồm có các trường dữ liệu:

+ PathOrID (String): Đường dẫn - ID của đối tượng. Đây là thông tin được dùng để kết nối hay mở tài nguyên trên cloud
+ Path (String): đường dẫn hình thức trên drive (theo tên đối tượng, không phải ID)
+ Name (String): Tên của đối tượng
+ FullName (String): đường dẫn đầy đủ trên drive
+ AppType (BSAppType): loại ứng dụng mở, ví dụ atGoogleSheets, atGoogleDocs, atExcel,...)
+ CloudType (BSCloudType): loại cloud lưu trữ (ctGoogleDrive, ctOneDrive, ctDropBox)
+ ItemType (BSCloudItemType): loại đối tượng, ví dụ itFolder, itFile
+ Ext (String): phần mở rộng tập tin, ví dụ .xlsx, .xlsxb, .jpg,...
+ MimeType (String): tên định dạng của đối tượng
+ UrlDownload (String): đường link tải đối tượng
+ UrlWeblink (String): đường link mở trên trình duyệt để xem, soạn thảo. Dùng cho Google Sheets, Excel Online.
+ Size (Variant/Long/LongLong): kích thước tập tin tính bằng byte.
+ CloudPath (String): đường dẫn trên drive.
+ CreationDate (Date): ngày giờ tạo đối tượng.
+ ModifiedDate (Date): ngày giờ thay đổi nội dung đối tượng.

BSAppType là kiểu Enum gồm các hằng số:
atUnknown = 0;
atExcel = 1;
atWord = 2;
atPowerpoint = 3;
atAccess = 4;
atGoogleSheets = 5;
atGoogleDocument = 6;
atGooglePPT = 7;

BSCloudTypelà kiểu Enum gồm các hằng số:
ctUnKnown_ = 0;
ctGoogleDrive = 1;
ctOneDrive = 2;
ctDropBox = 3;

BSCloudItemType là kiểu Enum gồm các hằng số:
itFile = 0; (tập tin)
itFolder = 1; (thư mục)
itFolderLevelUp = 2; (đối tượng chọn là [...] để mở thư mục cha)
itRoot = 3; (đường dẫn gốc trên drive)

Dùng hàm SaveFileDialog() - Nhận thông tin folder

C#:
Sub Drive_SaveFileDialog()
   Dim MyCloud As New BSCloud
   Dim MyPath As BSFileInfo
   On Error GoTo lbEnd
   If Not MyCloud.Connected(MyCloudType) Then
      If Not MyCloud.OpenAuthor(Application, MyCloudType, Application.Hwnd) Then Exit Sub
   End If
   If MyCloud.FileManager.SaveFileDialog(MyPath, atUnknown, , "Title", , Application.Hwnd) Then
      MsgBoxW MyPath.FullName, VbMsgBoxStyle.vbInformation, , strUNICODE
   End If
lbEnd:
   If Err <> 0 Then
      Debug.Print "Error: " & Err.Description
   End If
   Set MyCloud = Nothing
End Sub

Sau khi chạy thủ tục trên sẽ hiển thị hộp thoại giống với OpenFileDialog nhưng hàm sẽ trả về thông tin của folder (tức BSFileInfo.ItemType = itFolder) thay vì của tập tin.

Dùng hàm OpenFolderDialog() - Nhận thông tin folder
Hàm này hiển thị hộp thoại chỉ có các folder, khác với OpenFileDialog, SaveFileDialog hiển thị cả folder và tập tin.

C#:
Sub Drive_OpenFolderDialog()
   Dim MyCloud As New BSCloud
   Dim MyPath As BSFileInfo
   On Error GoTo lbEnd
   If Not MyCloud.Connected(MyCloudType) Then
      If Not MyCloud.OpenAuthor(Application, MyCloudType, Application.Hwnd) Then Exit Sub
   End If
   If MyCloud.FileManager.OpenFolderDialog(MyPath, , , Application.Hwnd) Then
      MsgBoxW MyPath.PathOrID, VbMsgBoxStyle.vbInformation, , strUNICODE
   End If
lbEnd:
   If Err <> 0 Then
      Debug.Print "Error: " & Err.Description
   End If
   Set MyCloud = Nothing
End Sub

Sau khi chạy thủ tục trên sẽ xuất hiện hộp thoại để chọn folder

openfolderdialog.png


Lưu ý: sử dụng hộp thoại SaveFileDialog() và OpenFolderDialog() để lấy thông tin folder vào tham số BSFileInfo. Biến này hoặc trường thông tin PathOrID được dùng để đưa vào hàm Upload, Copy, Move để dữ liệu vào đường folder đó.

Ở ví dụ trên khi nhấn nút "Select" sẽ nhận giá trị vào biến MyPath như dưới đây

openfolderdialog-result.png

Bài viết gốc tại đây
Download Add-in A-Tools

Bài viết tiếp theo tôi sẽ hướng dẫn các bạn cách Upload và Download với các drive.
Còn tiếp...
 
Lần chỉnh sửa cuối:
Anh hướng dẫn cái mà không liên quan đến A-Tools nữa đi
 
UPLOAD và DOWNLOAD CƠ BẢN

Bài viết hướng dẫn cách lập trình VBA để upload tập tin lên drive, download tập tin từ drive về máy tính. Các loại drive là Google Drive, OneDrive, DropBox. Trong quá trình chạy ứng dụng bạn cần đẩy các tập tin lưu lên cloud/drive hoặc tải về để làm việc, toàn bộ việc này cần được tự động hóa bởi các lệnh lập trình cùng thư viện Add-in A-Tools.

Video hướng dẫn nhanh


Hướng dẫn lập trình

Đầu tiên bạn cần:nhúng thư viện AddinATools.DLL vào VBAProject trong tập tin của bạn. Nếu bạn chưa đọc bài đầu tiên, hãy xem hướng dẫn tại bài viết này để có kiến thức hệ thống.

Tạo module để viết code. Trên đầu module hãy khai báo hằng số MyCloudType để chỉ định loại drive bạn muốn kết nối.

C#:
Private Const MyCloudType = ctGoogleDrive
'Private Const MyCloudType = ctOneDrive
'Private Const MyCloudType = ctDropBox

Tất cả mã nguồn trong bài viết này dùng chung cho cả Google Drive, OneDrive, DropBox.

UPLOAD TẬP TIN LÊN DRIVE

Để thực hiện việc tải dùng hàm Upload trong class BSCloudFileManager. Cấu trúc hàm Upload như sau:
C#:
Function Upload(FullName As String, PathDest, [Replace As Boolean = False], FileInfo As BSFileInfo, [ParentHandle]) As Boolean

+ FullName (string): là tập tin nguồn để upload lên drive.

+ PathDest (string/BSFileInfo): là kiểu string khai báo PathID (đường dẫn) trên drive để lưu tập tin. Tham số này có thể là kiểu BSFIleInfo chứa thông tin thư mục trên drive, kiểu dữ liệu thường nhận bởi hàm OpenFolderDialog() hoặc SaveFileDialog().

+ Replace (Boolean): nếu là False (ngầm định) hàm sẽ không thay thế. Nếu True hàm sẽ thay thế nếu có tập tin có trong cùng đường dẫn.
+ FileInfo (BSFileInfo): tham số này nhận thông tin của tập tin đã được upload lên drive nếu hàm Upload trả về True.

+ ParentHandle (Long/LongLong): là handle của cửa sổ cha. Có thể bỏ qua.

Ví dụ:

C#:
Sub Drive_Upload()
   Dim MyCloud As New BSCloud
   Dim DestPath As BSFileInfo, FileInfo As BSFileInfo
   Dim SourceFile As String
   On Error GoTo lbEnd
   If Not MyCloud.Connected(MyCloudType) Then
      If Not MyCloud.OpenAuthor(Application, MyCloudType, Application.Hwnd) Then Exit Sub
   End If
   SourceFile = "C:\A-Tools\A-Tools.mdb"
   'If MyCloud.FileManager.SaveFileDialog(Path, atUnknown, , "", , Application.Hwnd) Then
   If MyCloud.FileManager.OpenFolderDialog(DestPath, , , Application.Hwnd) Then  'Get path on drive
      MyCloud.FileManager.Upload SourceFile, DestPath, , FileInfo  'Upload to drive
      Debug.Print FileInfo.PathOrID
      MsgBoxW FileInfo.PathOrID, VbMsgBoxStyle.vbInformation, , strUNICODE
   End If
lbEnd:
   If Err <> 0 Then
      Debug.Print "Error: " & Err.Description
   End If
   Set MyCloud = Nothing
End Sub

Ví dụ trên khi chạy sẽ hiển thị cửa sổ quản lý các folder và tập tin trên drive bởi hàm OpenFolderDialog() cho phép người dùng chọn folder để lưu tập tin, nếu hàm trả về True biến DestPath sẽ nhận thông tin đường dẫn được chọn.

openfolder-getpath.png

Sau khi chọn nút "Select" tập tin "A-Tools.mdb" được đẩy lên Google Drive.

gdrive-upload.png

Nếu bạn đã xác định đường dẫn vào biến DeskPath và không cần phải mở hộp thoại để chọn thì xem ví dụ dưới đây:

C#:
Sub Drive_Upload_Basic()
   Dim MyCloud As New BSCloud
   Dim DestPath As Variant  'Or BSFileInfo
   Dim SourceFile As String
   Dim FileInfo As BSFileInfo
   On Error GoTo lbEnd
   'Check connecting
   If Not MyCloud.Connected(MyCloudType) Then
      If Not MyCloud.OpenAuthor(Application, MyCloudType, Application.Hwnd) Then Exit Sub
   End If
   'Upload
   DestPath = "1PUJLVrRge5ZfOxpY8LV2-5wZnN5Fc3tY"
   SourceFile = "C:\A-Tools\A-Tools.mdb"
   If MyCloud.FileManager.Upload(SourceFile, DestPath, False, FileInfo) Then
      Debug.Print FileInfo.PathOrID
      MsgBoxW FileInfo.PathOrID, VbMsgBoxStyle.vbInformation, , strUNICODE
   End If
lbEnd:
   If Err <> 0 Then
      Debug.Print "Error: " & Err.Description
   End If
   Set MyCloud = Nothing
End Sub

Upload tập tin lên drive và thay thế

Để thay thế bạn có thể dùng hàm Upload và cần khai báo tham số Replace = True. Khai báo FileInfo.PathOrID = FileID của tập tin cần thay thế. Hoặc dùng hàm Repace(). Ví dụ như sau:

C#:
Sub Drive_Replace_Basic()
   Dim MyCloud As New BSCloud
   Dim DestPath As Variant  'Or BSFileInfo
   Dim SourceFile As String
   Dim FileInfo As BSFileInfo, fi As BSFileInfo
   On Error GoTo lbEnd
   'Check connecting
   If Not MyCloud.Connected(MyCloudType) Then
      If Not MyCloud.OpenAuthor(Application, MyCloudType, Application.Hwnd) Then Exit Sub
   End If
   'Replace - Upload(Replace := True)
   SourceFile = "C:\A-Tools\A-Tools.mdb"
   FileInfo.PathOrID = "1gQozQR-UWUWLFspy_j5iztFXIrCn0I_0"  'FileID exists on the drive to replace
'Way 1:
   'DestPath = "1PUJLVrRge5ZfOxpY8LV2-5wZnN5Fc3tY"
   'If MyCloud.FileManager.Upload(SourceFile, DestPath, True, FileInfo) Then
'Way 2:
   If MyCloud.FileManager.Replace(FileInfo.PathOrID, SourceFile, FileInfo) Then
      Debug.Print FileInfo.PathOrID
      MsgBoxW FileInfo.PathOrID, VbMsgBoxStyle.vbInformation, , strUNICODE
   End If
   MyCloud.FileManager.GetFileInfo FileInfo.PathOrID, FileInfo
lbEnd:
   If Err <> 0 Then
      Debug.Print "Error: " & Err.Description
   End If
   Set MyCloud = Nothing
End Sub

DOWNLOAD TẬP TIN TỪ DRIVE

Để download tập tin trên drive về ta dùng hàm Download() trong class BSCloudFileManager. Cấu trúc hàm như sau:

C#:
Function Download(FileInfo, FullName As String, [ParentHandle], [ExportFormat As String]) As Boolean

Giải thích tham số của hàm:
+ FileInfo (String/BSFileInfo): là thông tin tập tin nguồn trên drive/cloud. Nếu khai báo kiểu BSFileInfo thì phải chứa thông tin của tập tin trên drive, thường nó nhận từ hàm OpenFileDialog(), giá trị bắt buộc là FileInfo.PathOrID. Nếu khai báo kiểu String thì nó là FileID của tập tin trên drive.

+ FullName (String): là đường dẫn tập tin (bao gồm cả đường dẫn folder) để lưu tập tin từ drive. Nếu để trống (FillName = ""), hàm sẽ xuất hộp thoại để người dùng chọn đường dẫn và tên tâp tin để lưu.

+ ParentHandle (Long/LongLong): là handle của cửa sổ cha. Ví dụ Application.Hwnd. Nếu bỏ qua tham số này hàm nhận handle của cửa sổ đang hoạt động.

+ ExportFormat (String): kiểu dữ liệu được xuất ra - chuyển đổi/export. Ví dụ từ xuất thành PDF, giá trị là "application/pdf". Ngầm định để trống, hàm sẽ giữ nguyên định dạng của tập tin. Bạn hãy xem thêm ví dụ về Export ở phần dưới bài viết này.

Hàm trả về True nếu tải về thành công, trường hợp khác là False.

Ví dụ:

C#:
Sub Drive_Download()
   Dim MyCloud As New BSCloud
   Dim MyFile As BSFileInfo
   Dim TargetFile As String
   On Error GoTo lbEnd
   If Not MyCloud.Connected(MyCloudType) Then
      If Not MyCloud.OpenAuthor(Application, MyCloudType, Application.Hwnd) Then Exit Sub
   End If
   If MyCloud.FileManager.OpenFileDialog(MyFile, atUnknown, , , , Application.Hwnd) Then  'Open the file dialog to get the source file
      TargetFile = ""  'If "FullName" is empty, function Download opens the "Save" dialog box
      'for you to enter the file name and path.
      MyCloud.FileManager.Download MyFile, TargetFile, Application.Hwnd
      Debug.Print TargetFile
      MsgBoxW TargetFile, VbMsgBoxStyle.vbInformation, , strUNICODE
   End If
lbEnd:
   If Err <> 0 Then
      Debug.Print "Error: " & Err.Description
   End If
   Set MyCloud = Nothing
End Sub

Khi chạy thủ tục trên sẽ xuất hiện hộp thoại để chọn tập tin nguồn bởi hàm OpenFileDialog().

gdrive-download.png

Sau khi nhấn nút "Open" xuất hiện cửa sổ "Save" để chọn tập tin lưu do FullName = "".

gdrive-save.png
Mục "Save as type: " bạn có thể chỉ định loại định dạng mà bạn muốn xuất ra.

Sau khi chọn "Save", nếu hàm Download() trả về True thì việc tải về đã thành công và nhận được thông báo bởi hàm MsgBox.

gdrive-result.png

Download tập tin từ drive không xuất hiện hộp thoại

Nếu bạn đã có FileID của tập tin trên drive/cloud và chỉ định đường dẫn lưu tập tin thì thực hiện ví dụ sau

C#:
Sub Drive_Download_Basic()
   Dim MyCloud As New BSCloud
   Dim MyFile As Variant
   Dim TargetFile As String
   On Error GoTo lbEnd
   If Not MyCloud.Connected(MyCloudType) Then
      If Not MyCloud.OpenAuthor(Application, MyCloudType, Application.Hwnd) Then Exit Sub
   End If
   MyFile = "1gQozQR-UWUWLFspy_j5iztFXIrCn0I_0"
   TargetFile = "C:\Users\ADMIN\Downloads\A-Tools.mdb"
   If MyCloud.FileManager.Download(MyFile, TargetFile, Application.Hwnd) Then
      Debug.Print TargetFile
      MsgBoxW TargetFile, VbMsgBoxStyle.vbInformation, , strUNICODE
   End If
lbEnd:
   If Err <> 0 Then
      Debug.Print "Error: " & Err.Description
   End If
   Set MyCloud = Nothing
End Sub

Để ý ví dụ trên bạn thấy biến MyFile bây giờ tôi khai báo kiểu String để nhận FileID thay vì BSFIleInfo ở ví du trước đó.

Xuất/Export tập tin ra các định dạng

Xuất dữ liệu chỉ thực hiện với loại cloud là Google Drive, OneDrive.

C#:
'(*) Export support for Google Drive and OneDrive only!
'Để xuất định dạng file, sử dụng tham số ExportFormat trong hàm Download()
'Giá trị của tham số ExportFormat phụ thuộc vào loại drive/cloud (CloudType).
'Nếu DriveType/CloudType là
' + OneDrive:
' ExportFormat là "PDF" nếu ddingj dạng tập tin nguồn là: csv, doc, docx, odp, ods, odt, pot, potm, potx, pps, ppsx, ppsxm, ppt, pptm, pptx, rtf, xls, xlsx
' ExportFormat là "html" nếu định dạng tập tin nguồn là: loop, fluid, wbtx
'
' + GoogleDrive:
' ExportFormat là giá trị của MIME Type. Xem thông tị tại đây: https://developers.google.com/drive/api/guides/ref-export-formats?hl=en
' Ví dụ nếu xuất ra tập tin PDF thì tham số ExportFormat là "application/pdf"
Sub Drive_Export()
   Dim MyCloud As New BSCloud
   Dim MyFile As BSFileInfo
   Dim FullName As String
   If MyCloudType = ctDropBox Then
      MsgBox "This drive not support Export().", vbCritical
      Exit Sub
   End If
   On Error GoTo lbEnd
   If Not MyCloud.Connected(MyCloudType) Then
      If Not MyCloud.OpenAuthor(Application, MyCloudType, Application.Hwnd) Then Exit Sub
   End If
   'Get source file
   If MyCloud.FileManager.OpenFileDialog(MyFile, atUnknown, , , , Application.Hwnd) Then
      'If "FullName" is empty, function Download opens the "Save" dialog box for you to enter the file name and path.
      'OneDrive
      If MyCloudType = ctOneDrive Then
         MyCloud.FileManager.Download MyFile, FullName, Application.Hwnd, "pdf"
      ElseIf MyCloudType = ctGoogleDrive Then
         'GooogleDrive
         MyCloud.FileManager.Download MyFile, FullName, Application.Hwnd, "application/pdf"
      End If
      Debug.Print FullName
      MsgBoxW FullName, VbMsgBoxStyle.vbInformation, , strUNICODE
   End If
lbEnd:
   If Err <> 0 Then
      Debug.Print "Error: " & Err.Description
   End If
   Set MyCloud = Nothing
End Sub

Xem thêm ví dụ về xuất tập ra các định dạng khác nhau từ Google Drive, OneDrive,

Bài viết gốc tại đây
Download Add-in A-Tools

Bài viết tiếp theo tôi sẽ hướng dẫn các bạn cách Upload và Download nâng cao, lập trình với sự kiện để biết tiến trình đang thực hiện.
Còn tiếp...
 
Lần chỉnh sửa cuối:
1741485430414.png

Cũng bước đầu làm gần giống được của anh rồi. Đang hoàn thiện từng bước 1
 
Web KT

Bài viết mới nhất

Back
Top Bottom