CÔNG TY CỔ PHẦN BLUESOFTS

Hướng dẫn lập trình VBA với Google Drive, OneDrive và DropBox Copy và Move

 Bài viết hướng dẫn cách lập trình VBA để copy và dichuyeenr/move tập tin hoặc folder trên drive. Các loại drive là Google Drive, OneDrive, DropBox.

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.
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.

Copy tập tin hoặc folder

Để copy tập tin hoặc folder trên cloud dùng hàm Copy() trong class BSCloudFileManager. Cấu trúc hàm như sau:

Function Copy(Src, PathDest, Dest As BSFileInfo, [ParentHandle]) As Boolean 

Các tham số:

+ Src (Variant): Kiểu Variant. Là FileID hoặc Url của tài nguyên nguồn. Src có thể là kiểu BSFileInfo chứa các thông tin của tài nguyên nguồn, thường nhận từ các hàm OpenFileDialog.

+ PathDest (Variant): Kiểu Variant. Là FileID hoặc Url của thư mục đích. PathDest có thể là kiểu BSFileInfo chứa các thông tin của tài nguyên nguồn, thường nhận từ các hàm OpenFolderDialog.

+ Dest (BSFileInfo): Có kiểu BSFileInfo chứa thông tin của tài nguyễn mới được sao chép trên drive. Tham số này chỉ nhận giá trị khi hàm Copy() trả về TRUE.

+ ParentHandle (Long/LongLOng): là handle của cửa số làm việc, có thể là Application.Hwnd, nếu bỏ qua thì là handle của cửa sổ hiện tại.

Hàm Copy() trả về True nếu việc copy thành công, False là không.

Ví dụ:

Sub Drive_Copy() 
   Dim MyCloud As New BSCloud 
   Dim fm As BSCloudFileManager 
   Dim MyFile As BSFileInfo, PathDest As BSFileInfo, FileInfo 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 
   Set fm = MyCloud.FileManager 
   If fm.OpenFileDialog(MyFile, atUnknown, , "Chon file nguon", , Application.Hwnd) Then 
      If fm.OpenFolderDialog(PathDest, "Chon thu muc dich", , Application.Hwnd) Then 
'Type of Src, PathDest can be:
         ' + String: url, file_id
         ' + BSFileInfo: FileInfo.PathOrID
         fm.Copy MyFile, PathDest, FileInfo  ',Application.Hwnd
         Debug.Print FileInfo.PathOrID 
         MsgBox FileInfo.PathOrID 
      End If 
   End If 
lbEnd: 
   If Err <> 0 Then 
      Debug.Print "Error: " & Err.Description 
   End If 
   Set MyCloud = Nothing 
End Sub 

Giải thích:

Dòng code có hàm OpenFileDialog() sẽ mở để nhận thông tin tập tin nguồn, lưu vài biến MyFile. Bạn có thể chỉ định giá trị cho biến này nếu không muốn mở hộp thoại.

Dòng code có hàm OpenFolderDialog() sẽ mở để nhận thông tin thư mục đích để nhận tập tin nguồn, lưu vài biến PathDest. Bạn có thể chỉ định giá trị cho biến này nếu không muốn mở hộp thoại.



Move tập tin hoặc folder (Di chuyển tài nguyên trên drive)

Để di chuyển tập tin hoặc folder trên cloud dùng hàm Move() trong class BSCloudFileManager. Cấu trúc hàm như sau:

Function Move(Src, PathDest, Dest As BSFileInfo, [ParentHandle]) As Boolean 

Các tham số:

+ Src (Variant): Kiểu Variant. Là FileID hoặc Url của tài nguyên nguồn. Src có thể là kiểu BSFileInfo chứa các thông tin của tài nguyên nguồn, thường nhận từ các hàm OpenFileDialog.

+ PathDest (Variant): Kiểu Variant. Là FileID hoặc Url của thư mục đích. PathDest có thể là kiểu BSFileInfo chứa các thông tin của tài nguyên nguồn, thường nhận từ các hàm OpenFolderDialog.

+ Dest (BSFileInfo): Có kiểu BSFileInfo chứa thông tin của tài nguyễn mới được sao chép trên drive. Tham số này chỉ nhận giá trị khi hàm Copy() trả về TRUE.

+ ParentHandle (Long/LongLOng): là handle của cửa số làm việc, có thể là Application.Hwnd, nếu bỏ qua thì là handle của cửa sổ hiện tại.

Hàm Move() trả về True nếu việc di chuyển thành công, False là không.

Ví dụ:

Sub Drive_Move() 
   Dim MyCloud As New BSCloud 
   Dim fm As BSCloudFileManager 
   Dim MyFile As BSFileInfo, PathDest As BSFileInfo, FileInfo 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 
   Set fm = MyCloud.FileManager 
   If fm.OpenFileDialog(MyFile, atUnknown, , "Chon file nguon", , Application.Hwnd) Then 
      If fm.OpenFolderDialog(PathDest, "Chon thu muc dich", , Application.Hwnd) Then 
'Type of Src, PathDest can be:
         ' + String: url, file_id
         ' + BSFileInfo: FileInfo.PathOrID
         fm.Move MyFile, PathDest, FileInfo, Application.Hwnd 
         Debug.Print FileInfo.PathOrID 
         MsgBox FileInfo.PathOrID 
      End If 
   End If 
lbEnd: 
   If Err <> 0 Then 
      Debug.Print "Error: " & Err.Description 
   End If 
   Set MyCloud = Nothing 
End Sub 

Còn tiếp...

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