In diesem Artikel wird gezeigt, wie Sie mit VBA Elemente in die Zwischenablage kopieren.
Es kann vorkommen, dass wir Informationen in Excel VBA kopieren und speichern möchten, um sie in einer anderen Anwendung zu verwenden, oder zu einem anderen Zeitpunkt, wenn das Excel-Makro nicht mehr ausgeführt wird. Sobald ein Makro nicht mehr ausgeführt wird, sind die in einer oder mehreren Variablen gespeicherten Informationen nicht mehr vorhanden und können nicht mehr abgerufen werden. Eine Möglichkeit, dieses Problem zu lösen, besteht darin, diese Informationen in die Zwischenablage zu kopieren.
Kopieren in die Zwischenablage mit der HTML-Objektbibliothek
Die einfachste Möglichkeit, die Zwischenablage in Excel VBA zu verwenden, besteht darin, die HTML-Objektbibliothek aufzurufen.
1234567 | Unter StoreData()Dim varText als VarianteDim objCP als ObjektvarText = "Irgendein kopierter Text"Set objCP = CreateObject("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "text", varTextEnd Sub |
Da wir die späte Bindung verwenden, indem wir die Variable objCP als Objekt deklarieren, müssen wir keinen Verweis auf Excel hinzufügen, damit dieses Verfahren funktioniert.
Wenn wir nun zu unserem Excel-Arbeitsblatt wechseln und auf Einfügen klicken, wird der Text „Einige kopierte Daten“ in die ausgewählte Zelle eingefügt.
Würden wir diese obige Prozedur in eine Funktion umwandeln, könnten wir den zu kopierenden Text als Variable übergeben.
12345 | Funktion StoreData(varText As Variant) als StringDim objCP als ObjektSet objCP = CreateObject("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "text", varTextEndfunktion |
Wir könnten diese Funktion dann mehrmals in unserem VBA-Code aufrufen, wenn wir Text in die Zwischenablage kopieren müssen. Der Text wäre daher nicht in den VBA-Code hartcodiert.
123 | Unter CopyData()StoreData "Einige kopierter Text"End Sub |
Wir können das HTML-Objekt auch verwenden, um den Text aus der Zwischenablage zurückzugeben - dh Einfügen. Dazu verwenden wir die GetData- statt der SetData-Methode.
12345 | Funktion ReturnData()Dim objCP als ObjektSet objCP = CreateObject("HtmlFile")ReturnData = objCP.parentWindow.clipboardData.GetData("text")Endfunktion |
Wir können diese Funktion dann aufrufen, um die in der Zwischenablage gespeicherten Daten zurückzugeben.
123 | Unter PasteData()MsgBox ReturnDataEnd Sub |
Ein netter Trick wäre, die beiden Funktionen miteinander zu kombinieren, sodass wir dieselbe Funktion zum Kopieren und Einfügen von Daten verwenden könnten, je nachdem, ob wir Daten in die Zwischenablage senden oder nicht, oder ob wir Daten aus der Zwischenablage abrufen möchten.
1234567891011 | Funktion StoreOrReturnData(Optional strText As String) As StringDim varText als VarianteDim objCP als ObjektSet objCP = CreateObject("HtmlFile")varText = strTextWenn strText "" ThenobjCP.ParentWindow.ClipboardData.SetData "text", varTextAndersStoreOrReturnData = objCP.ParentWindow.ClipboardData.GetData("text")Ende WennEndfunktion |
Im obigen Code können wir die Variable strText optional machen - das heißt, wenn wir Daten kopieren möchten, werden wir den zu kopierenden Text einschließen, aber wenn wir Daten einfügen möchten, werden wir ihn ausschließen.
Wir weisen dann die String-Variable (strText) einer Variant-Variablen zu, damit sie in der SetData-Methode des HTML-Dateiobjekts gespeichert wird.
Um die Daten zu kopieren, können wir dieses Verfahren verwenden, beachten Sie, dass wir den zu kopierenden Text einfügen.
123 | Unter CopyData()StoreOrReturnData "SomeCopiedText"End Sub |
Um die Daten einzufügen, können wir dieses Verfahren verwenden. Das Meldungsfeld zeigt den in der Zwischenablage gespeicherten Wert an.
123 | Unter PasteData()MsgBox StoreOrReturnDataEnd Sub |