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 |