VBA – In Zwischenablage kopieren
In diesem Artikel zeigen wir Ihnen, wie Sie Elemente in die Zwischenablage mit VBA kopieren können.
Es könnte vorkommen, dass Sie Informationen in Excel VBA kopieren und speichern möchten, um sie in einer anderen Anwendung oder zu einem anderen Zeitpunkt zu verwenden, 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 Hilfe der HTML-Objektbibliothek
Die einfachste Möglichkeit, die Zwischenablage in Excel VBA zu nutzen, ist der Aufruf der HTML-Objektbibliothek.
Sub DatenAbspeichern()
Dim varText As Variant
Dim objCP As Object
varText = "Etwas kopierter Text"
Set objCP = CreateObject("HtmlFile")
objCP.ParentWindow.ClipboardData.SetData "text", varText
End Sub
Dabei wird die späte Bindung verwendet, indem die Variable objCP als Objekt deklariert wird, so dass Sie nicht zuerst einen Verweis hinzufügen müssen.
Wenn Sie ein Excel-Arbeitsblatt öffnen und auf Einfügen klicken, wird der Text „Etwas kopierter Text“ in die ausgewählte Zelle eingefügt.
Wenn Sie die vorherige Unterprozedur in eine Funktion ändern, können Sie den Text an eine Variable übergeben.
Function DatenAbspeichern(varText As Variant) as String
Dim objCP As Object
Set objCP = CreateObject("HtmlFile")
objCP.ParentWindow.ClipboardData.SetData "text", varText
End Function
Es ist dann möglich, diese Funktion mehrfach aufzurufen.
Sub DatenKopieren()
DatenAbspeichern "Etwas Kopierter Text"
End Sub
Sie können das HTML-Objekt auch verwenden, um den Text aus der Zwischenablage zurückzugeben, d.h. Einfügen. Verwenden Sie dazu die Methode GetData und nicht SetData.
Function DatenZurueckgeben()
Dim objCP As Object
Set objCP = CreateObject("HtmlFile")
DatenZurueckgeben = objCP.parentWindow.clipboardData.GetData("Text")
End Function
Dann können Sie diese Funktion aufrufen, um die in der Zwischenablage gespeicherten Daten zurückzugeben.
Sub DatenEinfuegen()
MsgBox DatenZurueckgeben
End Sub
Ein raffinierter Trick besteht darin, die beiden Funktionen miteinander zu kombinieren, so dass Sie dieselbe Funktion zum Kopieren und Einfügen von Daten verwenden können, je nachdem, ob Daten an die Zwischenablage gesendet werden oder nicht oder ob Sie Daten aus der Zwischenablage abrufen möchten.
Function DatenAbspeichernOderZurueckgeben(Optional strText As String) As String
Dim varText As Variant
Dim objCP As Object
Set objCP = CreateObject("HtmlFile")
varText = strText
If strText <> "" Then
objCP.ParentWindow.ClipboardData.SetData "text", varText
Else
DatenAbspeichernOderZurueckgeben = objCP.ParentWindow.ClipboardData.GetData("text")
End If
End Function
Im obigen Code ist die Variable strText optional, was bedeutet, dass Sie den Variablenwert nicht eingeben müssen, wenn Sie nur Daten einfügen möchten.
Weisen Sie dann die String-Variable (strText) einer Variant-Variablen zu, damit sie in der SetData-Methode des HTML-File-Object gespeichert werden kann.
Um die Daten zu kopieren, können Sie dieses Verfahren verwenden:
Sub DatenKopieren()
DatenAbspeichernOderZurueckgeben "EtwasKopierterText"
End Sub
Diese Prozedur zeigt eine Meldungsbox mit dem Wert aus der Zwischenablage an.
Sub EinfügenDatenEinfuegen()
MsgBox DatenAbspeichernOderZurueckgeben
End Sub