Ta članek bo pokazal, kako uporabiti VBA za kopiranje elementov v odložišče.
Včasih lahko želimo kopirati podatke v Excelu VBA in jih shraniti za uporabo v drugi aplikaciji ali ob drugem času, ko se makro Excel neha izvajati. Ko se makro neha izvajati, informacije, ki so shranjene v spremenljivki ali spremenljivkah, prenehajo obstajati in jih ni več mogoče pridobiti. Način za rešitev te težave bi bil kopiranje teh podatkov v odložišče.
Kopiranje v odložišče z uporabo knjižnice objektov HTML
Najpreprostejši način uporabe odložišča v Excelu VBA je klic knjižnice objektov HTML.
1234567 | Sub StoreData ()Zatemni varText kot variantoZatemni objCP kot objektvarText = "Nekaj kopiranega besedila"Nastavi objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "besedilo", varTextEnd Sub |
Ker uporabljamo pozno vezavo z razglasitvijo spremenljivke objCP za objekt, nam za delovanje tega postopka ni treba dodati sklica na Excel.
Če bi zdaj preklopili na delovni list Excel in kliknili Prilepi, bi bilo v izbrano celico vstavljeno besedilo »Nekateri kopirani podatki«.
Če bi ta zgornji postopek spremenili v funkcijo, bi lahko besedilo posneli kot spremenljivko.
12345 | Funkcija StoreData (varText kot varianta) kot nizZatemni objCP kot objektNastavi objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "besedilo", varTextKončana funkcija |
To funkcijo bi lahko nato v kodi VBA večkrat poklicali, ko in ko moramo besedilo kopirati v odložišče. Besedilo torej ne bi bilo težko kodirano v kodo VBA.
123 | Sub CopyData ()StoreData "Nekaj kopiranega besedila"End Sub |
Predmet HTML lahko uporabimo tudi za vrnitev besedila iz odložišča - torej lepljenje. Za to namesto metode SetData uporabljamo GetData.
12345 | Funkcija ReturnData ()Zatemni objCP kot objektNastavi objCP = CreateObject ("HtmlFile")ReturnData = objCP.parentWindow.clipboardData.GetData ("besedilo")Končana funkcija |
To funkcijo lahko nato pokličemo, da vrnemo podatke, shranjene v odložišču.
123 | Sub PasteData ()MsgBox ReturnDataEnd Sub |
Dober trik bi bil kombinacija dveh funkcij skupaj, tako da bi lahko isto funkcijo uporabili za kopiranje in lepljenje podatkov, odvisno od tega, ali podatke pošiljamo v odložišče ali ne, ali če želimo podatke pridobiti iz odložišča.
1234567891011 | Funkcija StoreOrReturnData (izbirno strText As String) As StringZatemni varText kot variantoZatemni objCP kot objektNastavi objCP = CreateObject ("HtmlFile")varText = strTextČe strText "" PotemobjCP.ParentWindow.ClipboardData.SetData "besedilo", varTextSicer paStoreOrReturnData = objCP.ParentWindow.ClipboardData.GetData ("besedilo")Konec ČeKončana funkcija |
V zgornji kodi lahko spremenljivko strText nastavimo kot neobvezno - to pomeni, da bomo, če želimo kopirati podatke, vključili besedilo, ki ga želimo kopirati, če pa želimo prilepiti podatke, ga bomo izključili.
Nato bomo spremenljivki niza (strText) dodelili spremenljivko Variant, da bo shranjena v metodi SetData v datotečnem predmetu HTML.
Za kopiranje podatkov lahko uporabimo ta postopek. Upoštevajte, da vključujemo besedilo za kopiranje.
123 | PodkopijaData ()StoreOrReturnData "SomeCopiedText"End Sub |
Za prilepitev podatkov lahko uporabimo ta postopek. V sporočilnem polju bo prikazana vrednost, shranjena v odložišču.
123 | Sub PasteData ()MsgBox StoreOrReturnDataEnd Sub |