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