Trên máy tính, chúng ta thực hiện một lệnh copy (có thể là ảnh, file text, hoặc một đoạn văn bản...). Chúng ta muốn VBA coi thông tin copy này là Inptut và có những xử lý sau đó. Để làm được việc này, chúng ta có khái niệm Clipboard, đó chính là thông tin mà các bạn đã thực hiện copy trên máy tính.
Kiểm tra định dạng được lưu trong Clipboard
Dữ liệu được lưu trong Clipboard là loại dữ liệu kiểu gì? Bằng thuộc tính ClipboardFormats của đối tượng Application, chúng ta có thể xác định được.
Thuộc tính ClipboardFormats trả kiểu dữ liệu được lưu trong Clipboard cho vào mảng. Nếu như chẳng có dữ liệu nào được lưu trong Clipboard thì giá trị True(-1) sẽ được ghi vào trong ClipboardFormats(1) .
Đoạn code dưới đây sẽ kiểm tra kiểu dữ liệu được cất trong Clipboard có phải là Ảnh hay không, nếu đúng thì nó sẽ paste vào active sheet.
Lấy thông tin từ Clipboard
Cells là đối tượng của phương thức Copy hay Paste. Khi chúng ta không sử dụng Cells, chúng ta muốn lưu trữ kiểu dữ liệu đang được cất trong Clipboard vào biến số, thì chúng ta sẽ sử dụng đối tượng DataObject.
DataObject là một thành viên của MSForm. Khi sử dụng, chúng ta cần thiết định thư viện Microsoft Forms 2.0 Object Library.
Trong ví dụ dưới đây, "tuhocvba.net" đang được lưu trong biến số ký tự buf. Tiếp theo chúng ta sẽ cất kiểu dữ liệu đang được lưu trong Clipboard vào biến buf2.
DataObject không phải tính năng của Windows. Ở đây, nó như một cây cầu mà VBA cần tương tác để lấy được thông tin từ Clipboard.
Nguồn:
Kiểm tra định dạng được lưu trong Clipboard
Dữ liệu được lưu trong Clipboard là loại dữ liệu kiểu gì? Bằng thuộc tính ClipboardFormats của đối tượng Application, chúng ta có thể xác định được.
Thuộc tính ClipboardFormats trả kiểu dữ liệu được lưu trong Clipboard cho vào mảng. Nếu như chẳng có dữ liệu nào được lưu trong Clipboard thì giá trị True(-1) sẽ được ghi vào trong ClipboardFormats(1) .
Đoạn code dưới đây sẽ kiểm tra kiểu dữ liệu được cất trong Clipboard có phải là Ảnh hay không, nếu đúng thì nó sẽ paste vào active sheet.
Mã:
Sub Sample()
Dim CB As Variant, i As Long
CB = Application.ClipboardFormats
If CB(1) = True Then
MsgBox "Clipboard khong co gi", 48
Exit Sub
End If
For i = 1 To UBound(CB)
If CB(i) = xlClipboardFormatBitmap Then
ActiveSheet.Paste
Exit For
End If
Next i
End Sub
Cells là đối tượng của phương thức Copy hay Paste. Khi chúng ta không sử dụng Cells, chúng ta muốn lưu trữ kiểu dữ liệu đang được cất trong Clipboard vào biến số, thì chúng ta sẽ sử dụng đối tượng DataObject.
DataObject là một thành viên của MSForm. Khi sử dụng, chúng ta cần thiết định thư viện Microsoft Forms 2.0 Object Library.
Trong ví dụ dưới đây, "tuhocvba.net" đang được lưu trong biến số ký tự buf. Tiếp theo chúng ta sẽ cất kiểu dữ liệu đang được lưu trong Clipboard vào biến buf2.
Mã:
Sub Sample2()
Dim buf As String, buf2 As String, CB As New DataObject
buf = "tanaka"
With CB
.SetText buf ''chung ta luu du lieu cua bien so vao DataObject
.PutInClipboard ''chung ta luu du lieu DataObject vao Clipboard
.GetFromClipboard ''Lay du lieu cua DataObject tu Clipboard
buf2 = .GetText ''Luu thong tin du lieu cua DataObject vao bien so
End With
MsgBox buf2
End Sub
Nguồn:
Bạn cần đăng nhập để thấy link