VBA – In Zwischenablage kopieren

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Zakarya El Oirzadi

Last updated on August 24, 2022

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
vba-free-addin

Add-In für VBA-Code-Beispiele

Auf alle Code-Beispiele aus unserer Website einfach zugreifen.

Navigieren Sie einfach zum Menü, klicken Sie darauf und der Code wird direkt in Ihr Modul eingefügt. .xlam add-in.

(Keine Installation erforderlich!)

Kostenloser Download

Return to VBA Code Examples