Bu makale, öğeleri Panoya kopyalamak için VBA'nın nasıl kullanılacağını gösterecektir.
Excel VBA'daki bilgileri kopyalayıp başka bir uygulamada kullanmak üzere veya Excel makrosunun çalışmayı durdurduğu başka bir zamanda saklamak istediğimiz bir zaman olabilir. Bir makro çalışmayı durdurduğunda, bir değişkende veya değişkenlerde depolanan bilgilerin varlığı durur ve artık geri alınamaz. Bu sorunu çözmenin bir yolu, bu bilgiyi panoya kopyalamak olacaktır.
HTML Nesne Kitaplığını kullanarak Panoya Kopyalama
Panoyu Excel VBA'da kullanmanın en basit yolu, HTML Nesne Kitaplığını çağırmaktır.
1234567 | Alt DepoVerileri()VarText Olarak VarText DimObjCP'yi Nesne Olarak DimvarText = "Bazı kopyalanmış metinler"set objCP = CreateObject("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "metin", varTextAlt Bitiş |
objCP değişkenini Object olarak bildirerek geç bağlama kullandığımızdan, bu prosedürün çalışması için Excel'e bir referans eklememize gerek yok.
Şimdi Excel çalışma sayfamıza geçip Yapıştır'ı tıklayacak olsaydık, seçilen hücreye “Bazı kopyalanan veriler” metni eklenir.
Yukarıdaki işlemi bir fonksiyona çevirecek olursak, kopyalanacak metni bir değişken olarak geçirebiliriz.
12345 | Dize olarak StoreData(varText As Variant) İşleviObjCP'yi Nesne Olarak Dimset objCP = CreateObject("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "metin", varTextBitiş İşlevi |
Daha sonra, metni panoya kopyalamamız gerektiğinde ve gerektiğinde VBA kodumuzda bu işlevi birden çok kez çağırabiliriz. Bu nedenle metin, VBA koduna sabit kodlanmış olmaz.
123 | Alt CopyData()StoreData "Bazı kopyalanan metinler"Alt Bitiş |
Metni panodan döndürmek için HTML Nesnesini de kullanabiliriz - yani Yapıştırma. Bunun için SetData yöntemi yerine GetData kullanıyoruz.
12345 | İşlev ReturnData()ObjCP'yi Nesne Olarak Dimset objCP = CreateObject("HtmlFile")ReturnData = objCP.parentWindow.clipboardData.GetData("metin")Bitiş İşlevi |
Daha sonra panoda depolanan verileri döndürmek için bu işlevi çağırabiliriz.
123 | Alt YapıştırVeri()MsgBox ReturnDataAlt Bitiş |
Güzel bir hile, panoya veri gönderip göndermememize veya panodan veri almak isteyip istemediğimize bağlı olarak, verileri Kopyalamak ve Yapıştırmak için aynı işlevi kullanabilmemiz için 2 işlevi bir araya getirmek olacaktır.
1234567891011 | İşlev StoreOrReturnData(İsteğe bağlı strText As String) As StringVarText Olarak VarText DimObjCP'yi Nesne Olarak Dimset objCP = CreateObject("HtmlFile")varText = strTextstrText "" iseobjCP.ParentWindow.ClipboardData.SetData "metin", varTextBaşkaStoreOrReturnData = objCP.ParentWindow.ClipboardData.GetData("metin")BitirBitiş İşlevi |
Yukarıdaki kodda, strText değişkenini isteğe bağlı yapabiliriz - bu, eğer verileri kopyalamak istersek, kopyalanacak metni dahil edeceğiz, ancak verileri yapıştırmak istersek, hariç tutacağız demektir.
Ardından, HTML Dosya Nesnesinin SetData yönteminde saklanması için dize değişkenini (strText) bir Variant değişkenine atayacağız.
Verileri kopyalamak için bu prosedürü kullanabiliriz, kopyalanacak metni dahil ettiğimizi unutmayın.
123 | Alt CopyData()StoreOrReturnData "SomeCopiedText"Alt Bitiş |
Verileri yapıştırmak için bu prosedürü kullanabiliriz. Mesaj kutusu, panoda saklanan değeri gösterecektir.
123 | Alt YapıştırVeri()MsgBox StoreOrReturnDataAlt Bitiş |