Acest articol va arăta cum să utilizați VBA pentru a copia articole în Clipboard.
Este posibil să dorim să copiem informații în Excel VBA și să le stocăm pentru a le utiliza într-o altă aplicație sau într-un alt moment când macroul Excel a încetat să ruleze. Odată ce o macro încetează să ruleze, informațiile stocate într-o variabilă sau variabile nu mai există și nu mai pot fi recuperate. O modalitate de a rezolva această problemă ar fi copierea acestor informații în clipboard.
Copierea în clipboard utilizând biblioteca de obiecte HTML
Cel mai simplu mod de a utiliza clipboard-ul în Excel VBA este să apelați Biblioteca de obiecte HTML.
1234567 | Sub StoreData ()Dim varText Ca variantăDim objCP Ca obiectvarText = "Un text copiat"Setați objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "text", varTextSfârșitul Sub |
Deoarece folosim legarea târzie declarând variabila objCP ca obiect, nu este nevoie să adăugăm o referință la Excel pentru ca această procedură să funcționeze.
Dacă ar fi să trecem acum la foaia noastră de lucru Excel și să facem clic pe Lipire, textul „Unele date copiate” ar fi inserat în celula selectată.
Dacă ar fi să schimbăm această procedură de mai sus într-o funcție, am putea trece textul care va fi copiat ca o variabilă.
12345 | Function StoreData (varText As Variant) ca ȘirDim objCP Ca obiectSetați objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "text", varTextFuncția de sfârșit |
Apoi am putea apela această funcție de mai multe ori în codul nostru VBA ca și când trebuie să copiem text în clipboard. Prin urmare, textul nu ar fi codificat în codul VBA.
123 | SubCopiereDate ()StoreData "Unele text copiat"Sfârșitul Sub |
Putem folosi și obiectul HTML pentru a returna textul din clipboard - adică lipirea. Pentru aceasta folosim mai degrabă metoda GetData decât metoda SetData.
12345 | Funcție ReturnData ()Dim objCP Ca obiectSetați objCP = CreateObject ("HtmlFile")ReturnData = objCP.parentWindow.clipboardData.GetData („text”)Funcția de sfârșit |
Putem apoi apela această funcție pentru a returna datele stocate în clipboard.
123 | Sub PasteData ()MsgBox ReturnDataSfârșitul Sub |
Un truc elegant ar fi combinarea celor 2 funcții împreună, astfel încât să putem folosi aceeași funcție pentru a copia și a lipi date, în funcție de faptul dacă trimitem sau nu date în clipboard sau dacă dorim să preluăm date din clipboard.
1234567891011 | Funcție StoreOrReturnData (StrText opțional ca șir) Ca șirDim varText Ca variantăDim objCP Ca obiectSetați objCP = CreateObject ("HtmlFile")varText = strTextDacă strText "" AtunciobjCP.ParentWindow.ClipboardData.SetData "text", varTextAltfelStoreOrReturnData = objCP.ParentWindow.ClipboardData.GetData („text”)End IfFuncția de sfârșit |
În codul de mai sus, putem face opțională variabila strText - asta înseamnă că, dacă dorim să copiem date, vom include textul care trebuie copiat, dar dacă dorim să lipim date, îl vom exclude.
Vom atribui apoi variabila șir (strText) unei variabile Variant pentru a fi stocată în metoda SetData a obiectului fișier HTML.
Pentru a copia datele, putem folosi această procedură, rețineți că includem textul de copiat.
123 | SubCopiereDate ()StoreOrReturnData "SomeCopiedText"Sfârșitul Sub |
Pentru a lipi datele, putem folosi această procedură. Caseta de mesaj va afișa valoarea stocată în clipboard.
123 | Sub PasteData ()MsgBox StoreOrReturnDataSfârșitul Sub |