Denne artikkelen viser hvordan du bruker VBA til å kopiere elementer til utklippstavlen.
Det kan være et tidspunkt vi ønsker å kopiere informasjon i Excel VBA og lagre den for bruk i et annet program eller på et annet tidspunkt når Excel -makroen har sluttet å kjøre. Når en makro slutter å kjøre, stopper informasjonen som er lagret i en eller flere variabler, og kan ikke lenger hentes. En måte å løse dette problemet på er å kopiere denne informasjonen til utklippstavlen.
Kopiere til utklippstavlen ved hjelp av HTML -objektbiblioteket
Den enkleste måten å bruke utklippstavlen i Excel VBA er å ringe HTML Object Library.
1234567 | Sub StoreData ()Dim varText As VariantDim objCP som objektvarText = "Noe kopiert tekst"Sett objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "tekst", varTextSlutt Sub |
Siden vi bruker sen binding ved å erklære variabelen objCP som et objekt, trenger vi ikke legge til en referanse til Excel for å få denne prosedyren til å fungere.
Hvis vi nå skulle bytte til vårt Excel -regneark og klikke på Lim inn, ville teksten "Noen kopierte data" settes inn i den valgte cellen.
Hvis vi skulle endre denne prosedyren ovenfor til en funksjon, kunne vi sende teksten som skal kopieres gjennom som en variabel.
12345 | Funksjon StoreData (varText As Variant) som strengDim objCP som objektSett objCP = CreateObject ("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "tekst", varTextSluttfunksjon |
Vi kan deretter kalle denne funksjonen flere ganger i vår VBA -kode når vi trenger å kopiere tekst til utklippstavlen. Teksten ville derfor ikke bli hardkodet inn i VBA-koden.
123 | Sub CopyData ()StoreData "Noe kopiert tekst"Slutt Sub |
Vi kan også bruke HTML -objektet til å returnere teksten fra utklippstavlen - dvs. Liming. For dette bruker vi GetData i stedet for SetData -metoden.
12345 | Funksjon ReturnData ()Dim objCP som objektSett objCP = CreateObject ("HtmlFile")ReturnData = objCP.parentWindow.clipboardData.GetData ("tekst")Sluttfunksjon |
Vi kan deretter kalle denne funksjonen for å returnere dataene som er lagret på utklippstavlen.
123 | Sub PasteData ()MsgBox ReturnDataSlutt Sub |
Et pent triks ville være å kombinere de to funksjonene sammen slik at vi kunne bruke den samme funksjonen til å kopiere og lime inn data, avhengig av om vi sender data til utklippstavlen eller ikke, eller om vi ønsker å hente data fra utklippstavlen eller ikke.
1234567891011 | Funksjon StoreOrReturnData (valgfri strText As String) As StringDim varText As VariantDim objCP som objektSett objCP = CreateObject ("HtmlFile")varText = strTextIf strText "" DaobjCP.ParentWindow.ClipboardData.SetData "tekst", varTextEllersStoreOrReturnData = objCP.ParentWindow.ClipboardData.GetData ("tekst")Slutt omSluttfunksjon |
I koden ovenfor kan vi gjøre strText -variabelen valgfri - dette betyr at hvis vi ønsker å kopiere data, vil vi inkludere teksten som skal kopieres, men hvis vi ønsker å lime inn data, vil vi utelukke det.
Vi vil deretter tilordne strengvariabelen (strText) til en variantvariabel for at den skal lagres i SetData -metoden for HTML -filobjektet.
For å kopiere dataene kan vi bruke denne fremgangsmåten, men vi tar med teksten som skal kopieres.
123 | Sub CopyData ()StoreOrReturnData "SomeCopiedText"Slutt Sub |
For å lime inn dataene kan vi bruke denne fremgangsmåten. Meldingsboksen viser verdien som er lagret på utklippstavlen.
123 | Sub PasteData ()MsgBox StoreOrReturnDataSlutt Sub |