Kopírování VBA do schránky

Tento článek předvede, jak pomocí VBA kopírovat položky do schránky.

Může se stát, že budeme chtít zkopírovat informace do aplikace Excel VBA a uložit je pro použití v jiné aplikaci nebo v jiném čase, kdy se přestane spouštět makro aplikace Excel. Jakmile se makro zastaví, informace uložené v proměnné nebo proměnných přestanou existovat a již je nelze načíst. Tento problém lze vyřešit zkopírováním těchto informací do schránky.

Kopírování do schránky pomocí knihovny objektů HTML

Nejjednodušší způsob použití schránky v aplikaci Excel VBA je zavolat knihovnu objektů HTML.

1234567 Dílčí data obchodu ()Dim varText jako variantaDim objCP jako objektvarText = "Nějaký zkopírovaný text"Nastavit objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "text", varTextEnd Sub

Protože používáme pozdní vazbu deklarováním proměnné objCP jako objektu, nepotřebujeme přidat odkaz na Excel, aby tato procedura fungovala.

Pokud bychom nyní přepnuli na náš excelový list a klikli na Vložit, do vybrané buňky by byl vložen text „Některá zkopírovaná data“.

Pokud bychom tento postup výše změnili na funkci, mohli bychom text, který se má zkopírovat, předat jako proměnnou.

12345 Funkce StoreData (varText As Variant) jako řetězecDim objCP jako objektNastavit objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "text", varTextKoncová funkce

Tuto funkci bychom pak mohli v našem kódu VBA volat vícekrát, když potřebujeme zkopírovat text do schránky. Text by proto nebyl pevně zakódován do kódu VBA.

123 Dílčí kopie dat ()StoreData "Nějaký zkopírovaný text"End Sub

Můžeme také použít Objekt HTML k vrácení textu ze schránky - tj. Vkládání. K tomu používáme spíše GetData než SetData metodu.

12345 Funkce ReturnData ()Dim objCP jako objektNastavit objCP = CreateObject ("HtmlFile")ReturnData = objCP.parentWindow.clipboardData.GetData ("text")Koncová funkce

Tuto funkci pak můžeme zavolat a vrátit data uložená ve schránce.

123 Sub PasteData ()MsgBox ReturnDataEnd Sub

Skvělý trik by byl kombinace těchto dvou funkcí dohromady, abychom mohli stejnou funkci použít ke kopírování a vkládání dat, v závislosti na tom, zda data odesíláme do schránky, nebo zda chceme data ze schránky načíst.

1234567891011 Funkce StoreOrReturnData (volitelný strText jako řetězec) jako řetězecDim varText jako variantaDim objCP jako objektNastavit objCP = CreateObject ("HtmlFile")varText = strTextPokud strText "" PakobjCP.ParentWindow.ClipboardData.SetData "text", varTextJinýStoreOrReturnData = objCP.ParentWindow.ClipboardData.GetData ("text")Konec IfKoncová funkce

Ve výše uvedeném kódu můžeme nastavit proměnnou strText jako volitelnou - to znamená, že pokud chceme kopírovat data, zahrneme text, který se má zkopírovat, ale pokud chceme data vložit, vyloučíme je.

Řetězcovou proměnnou (strText) pak přiřadíme proměnné Variant, aby byla uložena v metodě SetData objektu souboru HTML.

Chcete -li data zkopírovat, můžeme použít tento postup. Všimněte si, že zahrnujeme text, který se má zkopírovat.

123 Dílčí kopie dat ()StoreOrReturnData "SomeCopiedText"End Sub

K vložení dat můžeme použít tento postup. V okně se zprávou se zobrazí hodnota uložená ve schránce.

123 Sub PasteData ()MsgBox StoreOrReturnDataEnd Sub

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave