VBA sao chép vào khay nhớ tạm

Bài viết này sẽ trình bày cách sử dụng VBA để sao chép các mục vào Clipboard.

Có thể có lúc chúng tôi muốn sao chép thông tin trong Excel VBA và lưu trữ thông tin đó để sử dụng trong ứng dụng khác hoặc vào lúc khác khi macro Excel đã ngừng chạy. Khi macro ngừng chạy, thông tin được lưu trữ trong một biến hoặc các biến sẽ ngừng tồn tại và không thể truy xuất được nữa. Một cách để giải quyết vấn đề này là sao chép thông tin này vào khay nhớ tạm.

Sao chép vào khay nhớ tạm bằng Thư viện đối tượng HTML

Cách đơn giản nhất để sử dụng khay nhớ tạm trong Excel VBA là gọi Thư viện đối tượng HTML.

1234567 Cửa hàng phụData ()Dim varText As VariantLàm mờ objCP dưới dạng đối tượngvarText = "Một số văn bản được sao chép"Đặt objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "văn bản", varTextKết thúc Sub

Vì chúng tôi đang sử dụng liên kết trễ bằng cách khai báo biến objCP dưới dạng Đối tượng, chúng tôi không cần thêm tham chiếu vào Excel để làm cho thủ tục này hoạt động.

Nếu bây giờ chúng ta chuyển sang trang tính Excel của mình và nhấp vào Dán, thì văn bản “Một số dữ liệu đã sao chép” sẽ được chèn vào ô đã chọn.

Nếu chúng ta thay đổi quy trình ở trên thành một hàm, chúng ta có thể chuyển văn bản được sao chép qua dưới dạng một biến.

12345 Hàm StoreData (varText As Variant) dưới dạng chuỗiLàm mờ objCP dưới dạng đối tượngĐặt objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "văn bản", varTextChức năng kết thúc

Sau đó, chúng tôi có thể gọi hàm này nhiều lần trong mã VBA của chúng tôi và khi chúng tôi cần sao chép văn bản vào khay nhớ tạm. Do đó, văn bản sẽ không được mã hóa cứng thành mã VBA.

123 Bản sao phụ ()StoreData "Một số văn bản đã sao chép"Kết thúc Sub

Chúng ta cũng có thể sử dụng Đối tượng HTML để trả lại văn bản từ khay nhớ tạm - tức là Dán. Đối với điều này, chúng tôi sử dụng GetData thay vì phương thức SetData.

12345 Hàm ReturnData ()Làm mờ objCP dưới dạng đối tượngĐặt objCP = CreateObject ("HtmlFile")ReturnData = objCP.parentWindow.clipboardData.GetData ("text")Chức năng kết thúc

Sau đó, chúng ta có thể gọi hàm này để trả về dữ liệu được lưu trữ trên khay nhớ tạm.

123 Sub PasteData ()MsgBox ReturnDataKết thúc Sub

Một mẹo nhỏ sẽ là kết hợp 2 chức năng với nhau để chúng ta có thể sử dụng cùng một chức năng để Sao chép và Dán dữ liệu, tùy thuộc vào việc chúng ta có gửi dữ liệu vào khay nhớ tạm hay không hoặc nếu chúng ta muốn truy xuất dữ liệu từ khay nhớ tạm.

1234567891011 Hàm StoreOrReturnData (strText tùy chọn dưới dạng chuỗi) Dưới dạng chuỗiDim varText As VariantLàm mờ objCP dưới dạng đối tượngĐặt objCP = CreateObject ("HtmlFile")varText = strTextNếu strText "" ThìobjCP.ParentWindow.ClipboardData.SetData "văn bản", varTextKhácStoreOrReturnData = objCP.ParentWindow.ClipboardData.GetData ("text")Kết thúc nếuChức năng kết thúc

Trong đoạn mã trên, chúng ta có thể đặt biến strText là tùy chọn - điều này có nghĩa là nếu chúng ta muốn Sao chép dữ liệu, chúng ta sẽ bao gồm văn bản sẽ được sao chép, nhưng nếu chúng ta muốn Dán dữ liệu, chúng ta sẽ loại trừ nó.

Sau đó, chúng tôi sẽ gán biến chuỗi (strText) cho một biến Variant để nó được lưu trữ trong phương thức SetData của Đối tượng tệp HTML.

Để sao chép dữ liệu, chúng ta có thể sử dụng quy trình này, lưu ý rằng chúng ta đang bao gồm văn bản sẽ được sao chép.

123 Bản sao phụ ()StoreOrReturnData "SomeCopiedText"Kết thúc Sub

Để dán dữ liệu, chúng ta có thể sử dụng quy trình này. Hộp thông báo sẽ hiển thị giá trị được lưu trữ trên khay nhớ tạm.

123 Sub PasteData ()MsgBox StoreOrReturnDataKết thúc Sub

Bạn sẽ giúp sự phát triển của trang web, chia sẻ trang web với bạn bè

wave wave wave wave wave