VBA Kopiëren naar klembord

Dit artikel laat zien hoe u VBA kunt gebruiken om items naar het klembord te kopiëren.

Er kan een tijd zijn dat we informatie in Excel VBA willen kopiëren en opslaan voor gebruik in een andere toepassing of op een ander moment wanneer de Excel-macro niet meer wordt uitgevoerd. Zodra een macro niet meer wordt uitgevoerd, houdt de informatie die is opgeslagen in een variabele of variabelen op te bestaan ​​en kan deze niet meer worden opgehaald. Een manier om dit probleem op te lossen zou zijn om deze informatie naar het klembord te kopiëren.

Kopiëren naar het klembord met behulp van de HTML-objectbibliotheek

De eenvoudigste manier om het klembord in Excel VBA te gebruiken, is door de HTML-objectbibliotheek aan te roepen.

1234567 Sub StoreData()Dim varText As VariantDim objCP als objectvarText = "Sommige gekopieerde tekst"Stel objCP = CreateObject ("HtmlFile") inobjCP.ParentWindow.ClipboardData.SetData "tekst", varTextEinde sub

Omdat we late binding gebruiken door de variabele objCP als een object te declareren, hoeven we geen verwijzing naar Excel toe te voegen om deze procedure te laten werken.

Als we nu zouden overschakelen naar ons Excel-werkblad en op Plakken zouden klikken, zou de tekst "Sommige gekopieerde gegevens" in de geselecteerde cel worden ingevoegd.

Als we deze procedure hierboven in een functie zouden veranderen, zouden we de te kopiëren tekst als variabele kunnen doorgeven.

12345 Functie StoreData(varText As Variant) as StringDim objCP als objectStel objCP = CreateObject ("HtmlFile") inobjCP.ParentWindow.ClipboardData.SetData "tekst", varTextFunctie beëindigen

We zouden deze functie dan meerdere keren in onze VBA-code kunnen aanroepen als en wanneer we tekst naar het klembord moeten kopiëren. De tekst zou daarom niet hard gecodeerd worden in de VBA-code.

123 Sub CopyData()StoreData "Sommige gekopieerde tekst"Einde sub

We kunnen ook het HTML-object gebruiken om de tekst van het klembord terug te sturen - dwz Plakken. Hiervoor gebruiken we de GetData in plaats van de SetData methode.

12345 Functie ReturnData()Dim objCP als objectStel objCP = CreateObject ("HtmlFile") inReturnData = objCP.parentWindow.clipboardData.GetData("text")Functie beëindigen

We kunnen deze functie dan aanroepen om de gegevens die op het klembord zijn opgeslagen te retourneren.

123 Sub PasteData()MsgBox ReturnDataEinde sub

Een leuke truc zou zijn om de 2 functies samen te combineren, zodat we dezelfde functie kunnen gebruiken om gegevens te kopiëren en te plakken, afhankelijk van of we gegevens naar het klembord sturen of niet, of dat we gegevens van het klembord willen ophalen.

1234567891011 Functie StoreOrReturnData (Optioneel strText As String) As StringDim varText As VariantDim objCP als objectStel objCP = CreateObject ("HtmlFile") invarText = strTextAls strText "" DanobjCP.ParentWindow.ClipboardData.SetData "tekst", varTextAndersStoreOrReturnData = objCP.ParentWindow.ClipboardData.GetData("tekst")Stop alsFunctie beëindigen

In de bovenstaande code kunnen we de strText-variabele optioneel maken - dit betekent dat als we gegevens willen kopiëren, we de te kopiëren tekst zullen opnemen, maar als we gegevens willen plakken, zullen we deze uitsluiten.

We zullen dan de stringvariabele (strText) toewijzen aan een Variant-variabele zodat deze kan worden opgeslagen in de SetData-methode van het HTML-bestandsobject.

Om de gegevens te kopiëren, kunnen we deze procedure gebruiken, merk op dat we de te kopiëren tekst opnemen.

123 Sub CopyData()StoreOrReturnData "SomeCopiedText"Einde sub

Om de gegevens te plakken, kunnen we deze procedure gebruiken. Het berichtvenster toont de waarde die op het klembord is opgeslagen.

123 Sub PasteData()MsgBox StoreOrReturnDataEinde sub

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave