VBA Копиране в буферната памет

Тази статия ще покаже как да използвате VBA за копиране на елементи в буферната памет.

Може да има момент, в който искаме да копираме информация в Excel VBA и да я съхраняваме, за да я използваме в друго приложение, или в друг момент, когато макросът на Excel е спрял да работи. След като макросът спре да работи, информацията, която се съхранява в променлива или променливи, спира да съществува и вече не може да бъде извлечена. Начин за решаване на този проблем би бил да копирате тази информация в клипборда.

Копиране в клипборда с помощта на библиотеката с HTML обекти

Най -простият начин да използвате буферната памет в Excel VBA е да извикате HTML Object Library.

1234567 Sub StoreData ()Dim varText като вариантDim objCP като обектvarText = "Копиран текст"Задайте objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "текст", varTextEnd Sub

Тъй като използваме късно свързване чрез обявяване на променливата objCP като обект, не е необходимо да добавяме препратка към Excel, за да работи тази процедура.

Ако сега трябваше да преминем към нашия работен лист на Excel и щракнете върху Поставяне, текстът „Някои копирани данни“ ще бъде вмъкнат в избраната клетка.

Ако трябва да променим тази процедура по -горе във функция, бихме могли да предадем текста, който да бъде копиран като променлива.

12345 Функция StoreData (varText като вариант) като StringDim objCP като обектЗадайте objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "текст", varTextКрайна функция

След това бихме могли да извикаме тази функция няколко пъти в нашия VBA код както и когато трябва да копираме текст в клипборда. Следователно текстът не би бил кодиран трудно във VBA кода.

123 Sub CopyData ()StoreData „Някои копиран текст“End Sub

Можем също да използваме HTML обекта, за да върнем текста от клипборда - т.е. поставяне. За това използваме GetData, а не SetData метода.

12345 Функция ReturnData ()Dim objCP като обектЗадайте objCP = CreateObject ("HtmlFile")ReturnData = objCP.parentWindow.clipboardData.GetData ("текст")Крайна функция

След това можем да извикаме тази функция, за да върнем данните, съхранявани в клипборда.

123 Sub PasteData ()MsgBox ReturnDataEnd Sub

Един чист трик би бил комбинирането на двете функции заедно, така че да можем да използваме една и съща функция за копиране и за поставяне на данни, в зависимост от това дали изпращаме данни в клипборда или не, или ако искаме да извлечем данни от клипборда.

1234567891011 Функция StoreOrReturnData (Незадължително strText As String) Като StringDim varText като вариантDim objCP като обектЗадайте objCP = CreateObject ("HtmlFile")varText = strTextАко strText "" ТогаваobjCP.ParentWindow.ClipboardData.SetData "текст", varTextИначеStoreOrReturnData = objCP.ParentWindow.ClipboardData.GetData ("текст")Край АкоКрайна функция

В горния код можем да направим променливата strText незадължителна - това означава, че ако искаме да копираме данни, ще включим текста, който да се копира, но ако искаме да поставим данни, ще го изключим.

След това ще присвоим низовата променлива (strText) на променлива Variant, за да бъде съхранена в метода SetData на HTML файловия обект.

За да копираме данните, можем да използваме тази процедура, имайте предвид, че включваме текста за копиране.

123 Sub CopyData ()StoreOrReturnData "SomeCopiedText"End Sub

За да поставим данните, можем да използваме тази процедура. Кутията със съобщение ще покаже стойността, съхранена в клипборда.

123 Sub PasteData ()MsgBox StoreOrReturnDataEnd Sub

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave