Cara Copy Text Ke Clipboard Dengan VBA Pada UserForm

Melakukan copy dan paste merupakan hal yang paling sering dilakukan dalam Excel. Untuk mempermudah pekerjaan ada kalanya proses copy dan paste ini dibuat simple dengan hanya menekan tombol saja dengan bantuan VBA. Apalagi jika proses copy dan paste ini dilakukan dalam sebuah Userform

Pada materi kali ini, Excelnoob akan membuat tutorial bagaimana cara membuat tombol untuk melakukan Copy Text clipboard yang nantinya Text tersebut bisa di paste dimana saja, misalnya di Whatsapp, Telegram atau di Messenger.

Untuk melakukan Copy Text ke Clipboard dengan bantuan VBA disini kita bisa menggunakan Object dari MSForms Data Object. Untuk menggunakan Object ini ada 2 teknik yang bisa digunakan yaitu Early Binding dari Reference FM20.dll atau menggunakan Late Binding dimana Object dibuat saat Runtime.

Melakukan Copy Text Dengan Early Binding

Untuk teknik early binding ini sebenarnya tidak terlalu berpengaruh, karena Preference yg digunakan adalah FM20.dll. Library ini digunakan juga untuk Control Object dan UserForm bawaan VBA.

Tapi memang ketika pertama kali File Excel dibuka Microsoft Form 2.0 Object Library dalam keadaan tidak aktif.

Fm20dll Microsoft Form 2

Karena menggunakan teknik Early Binding tentu bagian Preferences ini harus diaktifkan.

Tetapi jika pada Excel yang digunakan sudah atau akan menggunakan UserForm atau Control maka bagian sudah otomatis Aktif dengan sendirinya.

Itulah kenapa saya bilang tidak terlalu berpengaruh karena FM20.dll ini selalu digunakan.

Untuk script VBA yang digunakan untuk melakukan Copy dengan Msform DataObject scriptnya seperti dibawah ini:

Public Sub CopyText(ByVal Txt As String)
    With New DataObject
        .SetText Txt
        .PutInClipboard
    End With
End Sub

Script diatas berada pada subrutine terpisah agar bisa digunakan berulang-ulang. Untuk penggunaannya bisa gunakan seperti dibawah ini, misalnya jika ingin copy text dari Textbox1

CopyText Textbox1.Text

Jadi cukup panggil Subrutine Copytext untuk menggunakan proses copy ke clipboard.

Copy Text Dengan Late Binding dengan CLSID

Untuk menggunakan Data Object dengan teknik Late binding, sayangnya tidak bisa langsung menuliskan Create Object dengan Class ID MSForms Data Object.

Misalnya jika kamu tulis seperti dibawah ini,

Dim Obj As Object
Set Obj = CreateObject("MSForms.DataObject")

Scripy diatas akan memunculkan Error ActiveX Component Can’t Create Object. kenapa bisa Error?

Untuk membuat Object dari MSForm data Object dengan Late Binding tidak bisa menggunakan nama Objectnya hanya bisa menggunakan Class ID (CLSID).

Untuk Class ID yang digunakan untuk Msform Data Object yaitu 1C3B4210-F441-11CE-B9EA-00AA006B1A69 sehingga penulisan scriptnya menjadi

Public Sub CopyText(ByVal Txt As String)
    With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        .SetText Txt
        .PutInClipboard
    End With
End Sub

Untuk penggunaanya masih sama seperti script Early binding yaitu menggunakan script CopyText Textbox1.Text dimana memanggil prosedur copytext

BUG: Kendala Saat Paste Menjadi ??

Msform DataObject ini memiliki sedikit Bug dimana saat proses copy selesai dan melakukan paste pada media yg dituju menjadi ?? atau menjadi Kotak Kotak.

Hal ini terjadi karena ada conflik dengan Microsoft Windows Explorer, jadi pastikan saat melakukan copy dengan Userform tidak sedang membuka Windows Explorer.

Untuk lebih detail tentang penggunaan Scipt Copy pada Paste ini bisa simak tutorial melalui Video di Alamat YouTube berikut ini : Copy Text ke Clipboard

Be the first to comment

Leave a Reply

Your email address will not be published.


*