Šiame straipsnyje bus parodyta, kaip naudojant VBA kopijuoti elementus į iškarpinę.
Gali būti laikas, kai norime nukopijuoti informaciją į „Excel VBA“ ir išsaugoti ją naudoti kitoje programoje arba kitu metu, kai „Excel“ makrokomanda nustoja veikti. Kai makrokomanda nustoja veikti, informacija, kuri yra saugoma kintamajame arba kintamajame, nustoja egzistuoti ir jos nebegalima gauti. Šios problemos sprendimas būtų nukopijuoti šią informaciją į iškarpinę.
Kopijavimas į iškarpinę naudojant HTML objektų biblioteką
Paprasčiausias būdas naudoti iškarpinę „Excel VBA“ yra paskambinti į HTML objektų biblioteką.
1234567 | Papildoma parduotuvėData ()Dim varText As VariantDim objCP kaip objektasvarText = "Kažkas nukopijuotas tekstas"Nustatyti objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "tekstas", varTextPabaiga Sub |
Kadangi mes naudojame vėlyvą įrišimą, paskelbdami kintamąjį objCP kaip objektą, mums nereikia pridėti nuorodos į „Excel“, kad ši procedūra veiktų.
Jei dabar pereitume prie „Excel“ darbalapio ir spustelėtume Įklijuoti, tekstas „Kai kurie nukopijuoti duomenys“ būtų įterptas į pasirinktą langelį.
Jei šią procedūrą pakeistume į funkciją, tekstą, kurį norime nukopijuoti, perduotume kaip kintamąjį.
12345 | Funkcija StoreData (varText As Variant) kaip eilutėDim objCP kaip objektasNustatyti objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "tekstas", varTextPabaigos funkcija |
Tada šią funkciją galėtume skambinti kelis kartus savo VBA kode, kai reikia nukopijuoti tekstą į mainų sritį. Todėl tekstas nebūtų sunkiai užkoduotas VBA kode.
123 | Sub CopyData ()„StoreData“ „Nukopijuotas tekstas“Pabaiga Sub |
Mes taip pat galime naudoti HTML objektą, norėdami grąžinti tekstą iš iškarpinės, ty įklijuoti. Tam mes naudojame „GetData“, o ne „SetData“ metodą.
12345 | Funkcija ReturnData ()Dim objCP kaip objektasNustatyti objCP = CreateObject ("HtmlFile")ReturnData = objCP.parentWindow.clipboardData.GetData ("tekstas")Pabaigos funkcija |
Tada galime iškviesti šią funkciją, kad grąžintume iškarpinėje išsaugotus duomenis.
123 | Sub PasteData ()„MsgBox ReturnData“Pabaiga Sub |
Puikus triukas būtų dviejų funkcijų sujungimas, kad galėtume naudoti tą pačią funkciją duomenims kopijuoti ir įklijuoti, priklausomai nuo to, ar siunčiame duomenis į mainų sritį, ar ne, ar norime gauti duomenis iš iškarpinės.
1234567891011 | Funkcija „StoreOrReturnData“ (pasirinktinai „strText as String“) kaip eilutėDim varText As VariantDim objCP kaip objektasNustatyti objCP = CreateObject ("HtmlFile")varText = strTextJei strText "" TadaobjCP.ParentWindow.ClipboardData.SetData "tekstas", varTextKitasStoreOrReturnData = objCP.ParentWindow.ClipboardData.GetData ("tekstas")Pabaiga JeiPabaigos funkcija |
Aukščiau esančiame kode mes galime padaryti kintamąjį „strText“ neprivalomą - tai reiškia, kad jei norime kopijuoti duomenis, įtraukiame tekstą, kurį reikia nukopijuoti, bet jei norime įklijuoti duomenis, jo neįtrauksime.
Tada eilutės kintamąjį (strText) priskirsime kintamam variantui, kad jis būtų išsaugotas HTML failo objekto metodu SetData.
Norėdami kopijuoti duomenis, galime naudoti šią procedūrą, atkreipkite dėmesį, kad įtraukiame kopijuojamą tekstą.
123 | Sub CopyData ()„StoreOrReturnData“ „SomeCopiedText“Pabaiga Sub |
Norėdami įklijuoti duomenis, galime naudoti šią procedūrą. Pranešimų laukelyje bus rodoma iškarpinėje išsaugota vertė.
123 | Sub PasteData ()„MsgBox StoreOrReturnData“Pabaiga Sub |