Tento článok ukáže, ako používať VBA na kopírovanie položiek do schránky.
Je možné, že budeme chcieť skopírovať informácie do programu Excel VBA a uložiť ich na použitie v inej aplikácii alebo v inom čase, keď sa makro programu Excel zastaví. Keď sa makro zastaví, informácie, ktoré sú uložené v premennej alebo premenných, prestanú existovať a už ich nemožno získať. Tento problém by bolo možné skopírovať do schránky.
Kopírovanie do schránky pomocou knižnice objektov HTML
Najjednoduchší spôsob, ako použiť schránku v programe Excel VBA, je zavolať do knižnice objektov HTML.
1234567 | Údaje vedľajšieho obchodu ()Dim varText ako variantDim objCP ako objektvarText = "Nejaký skopírovaný text"Nastaviť objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "text", varTextKoniec pod |
Pretože používame neskorú väzbu deklarovaním premennej objCP ako objektu, nepotrebujeme pridať odkaz na Excel, aby tento postup fungoval.
Ak by sme teraz prešli na náš pracovný hárok programu Excel a klikli na položku Prilepiť, do vybratej bunky by sa vložil text „Niektoré skopírované údaje“.
Ak by sme tento postup vyššie zmenili na funkciu, mohli by sme text, ktorý sa má skopírovať, odovzdať ako premennú.
12345 | Funkcia StoreData (varText ako variant) ako reťazecDim objCP ako objektNastaviť objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "text", varTextKoncová funkcia |
Túto funkciu by sme potom mohli v našom kóde VBA zavolať niekoľkokrát, keď potrebujeme skopírovať text do schránky. Text by preto nebol pevne zakódovaný do kódu VBA.
123 | Vedľajšia kópia údajov ()StoreData „Nejaký skopírovaný text“Koniec pod |
Objekt HTML môžeme použiť aj na vrátenie textu zo schránky - teda vkladanie. Na tento účel používame skôr metódu GetData než SetData.
12345 | Funkcia ReturnData ()Dim objCP ako objektNastaviť objCP = CreateObject ("HtmlFile")ReturnData = objCP.parentWindow.clipboardData.GetData ("text")Koncová funkcia |
Túto funkciu potom môžeme zavolať a vrátiť údaje uložené v schránke.
123 | Sub PasteData ()MsgBox ReturnDataKoniec pod |
Úhľadným trikom by bolo skombinovanie týchto dvoch funkcií dohromady, aby sme mohli rovnakú funkciu použiť na kopírovanie a vkladanie údajov v závislosti od toho, či odosielame údaje do schránky alebo nie, alebo či chceme načítať údaje zo schránky.
1234567891011 | Funkcia StoreOrReturnData (voliteľný strText ako reťazec) ako reťazecDim varText ako variantDim objCP ako objektNastaviť objCP = CreateObject ("HtmlFile")varText = strTextAk strText "" PotomobjCP.ParentWindow.ClipboardData.SetData "text", varTextInakStoreOrReturnData = objCP.ParentWindow.ClipboardData.GetData („text“)Koniec AkKoncová funkcia |
Vo vyššie uvedenom kóde môžeme premennú strText nastaviť ako voliteľnú - to znamená, že ak chceme skopírovať údaje, zahrnieme text, ktorý sa má skopírovať, ale ak chceme prilepiť údaje, vylúčime ich.
Reťazcovú premennú (strText) potom priradíme k premennej Variant, aby bola uložená v metóde SetData objektu súboru HTML.
Na kopírovanie údajov môžeme použiť tento postup, upozorňujeme, že vkladáme text, ktorý sa má skopírovať.
123 | Vedľajšia kópia údajov ()StoreOrReturnData "SomeCopiedText"Koniec pod |
Na vloženie údajov môžeme použiť tento postup. V okne so správou sa zobrazí hodnota uložená v schránke.
123 | Sub PasteData ()MsgBox StoreOrReturnDataKoniec pod |