VBA kopeerimine lõikelauale

See artikkel näitab, kuidas kasutada VBA -d üksuste lõikelauale kopeerimiseks.

Võib juhtuda, et soovime kopeerida teabe Exceli VBA -sse ja salvestada selle kasutamiseks teises rakenduses või muul ajal, kui Exceli makro töötamine on peatatud. Kui makro lakkab töötamast, lõpetab muutuja või muutujate salvestatud teabe olemasolu ja seda ei saa enam hankida. Selle probleemi lahendamise viis oleks selle teabe kopeerimine lõikelauale.

Kopeerimine lõikelauale, kasutades HTML -i objektiteeki

Lihtsaim viis lõikelaua kasutamiseks Excel VBA -s on helistada HTML -i objektiteeki.

1234567 Alampoe andmed ()Dim varText VariantDim objCP objektinavarText = "Mõni kopeeritud tekst"Määra objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "tekst", varTextEnd Sub

Kuna me kasutame hilist sidumist, kuulutades muutuja objCP objektiks, ei pea me selle protseduuri toimimiseks viiteid Excelile lisama.

Kui peaksime nüüd oma Exceli töölehele üle minema ja klõpsama käsku Kleebi, sisestatakse valitud lahtrisse tekst „Mõned kopeeritud andmed”.

Kui muudaksime ülaltoodud protseduuri funktsiooniks, saaksime kopeeritava teksti muutujana edasi anda.

12345 Funktsioon StoreData (varText As Variant) stringinaDim objCP objektinaMäära objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "tekst", varTextLõppfunktsioon

Seejärel võiksime seda funktsiooni oma VBA -koodis mitu korda kutsuda, kui ja millal on vaja teksti lõikelauale kopeerida. Seetõttu ei oleks tekst VBA-koodi kõvasti kodeeritud.

123 Alamkoopiaandmed ()StoreData "Mõni kopeeritud tekst"End Sub

Samuti võime kasutada HTML -objekti teksti lõikelaualt tagastamiseks - st kleepimine. Selleks kasutame meetodit GetData, mitte SetData.

12345 Funktsioon ReturnData ()Dim objCP objektinaMäära objCP = CreateObject ("HtmlFile")ReturnData = objCP.parentWindow.clipboardData.GetData ("tekst")Lõppfunktsioon

Seejärel saame sellele funktsioonile helistada, et taastada lõikelauale salvestatud andmed.

123 Sub PasteData ()MsgBox ReturnDataEnd Sub

Kena trikk oleks kahe funktsiooni kombineerimine, et saaksime kasutada sama funktsiooni andmete kopeerimiseks ja kleepimiseks, sõltuvalt sellest, kas me saadame andmed lõikelauale või mitte, või kui me tahame lõikelaualt andmeid alla laadida.

1234567891011 Funktsioon StoreOrReturnData (valikuline strText stringina) stringinaDim varText VariantDim objCP objektinaMäära objCP = CreateObject ("HtmlFile")varText = strTextKui strText "" SiisobjCP.ParentWindow.ClipboardData.SetData "tekst", varTextMuiduStoreOrReturnData = objCP.ParentWindow.ClipboardData.GetData ("tekst")Lõpp KuiLõppfunktsioon

Ülaltoodud koodis saame muuta muutuja strText valikuliseks - see tähendab, et kui me soovime andmeid kopeerida, lisame kopeeritava teksti, kuid kui me soovime andmeid kleepida, siis me välistame selle.

Seejärel määrame variandi muutujale stringimuutuja (strText), et see salvestataks HTML -failiobjekti meetodis SetData.

Andmete kopeerimiseks saame seda protseduuri kasutada, pange tähele, et lisame kopeeritava teksti.

123 Alamkoopiaandmed ()StoreOrReturnData "SomeCopiedText"End Sub

Andmete kleepimiseks saame kasutada seda protseduuri. Sõnumikast näitab lõikelauale salvestatud väärtust.

123 Sub PasteData ()MsgBox StoreOrReturnDataEnd Sub

Te aitate arengu ala, jagades leht oma sõpradega

wave wave wave wave wave