Es ist ganz einfach mit VBA eine Zelle zu kopieren und an einer anderen Stelle einzufügen. Am Beispiel der Zelle C3 würde das zum Beispiel mit einem einzeiligen VBA Befehl funktionieren.
Range("C3").Copy
Damit kopieren Sie allerdings nicht den Text der Zelle, sondern die gesamte Zelle inklusive der Formatierung. Das hat manche möglicherweise unerwünschten Auswirkungen beim Einfügen an anderer Stelle. Innerhalb von Excel werden so kopierte Zellen beim Aktivieren einer beliebigen Zelle über einen Doppelklick wieder aus dem Speicher gelöscht. Ein häufiges Ärgernis, dass viele Anwender bereits kennen werden, wenn von Hand eine oder mehrere Zellen kopiert worden sind. Auch dann kann nicht zuvor eine Zelle aktiviert werden, ohne dass der Zwischenspeicher wieder geleert wird. Ein weiteres Problem besteht, wenn Sie den Inhalt außerhalb von Excel einfügen möchten. Da erhält man je nach Programm dann nicht nur den Inhalt der Zelle, sondern auch die Zelle und Formatierung eingefügt.
Möchten Sie also den reinen Text kopieren, ist es sinnvoller den Inhalt der Zelle in die Windows Zwischenablage zu kopieren. Die Windows Zwischenablage wird nicht so schnell geleert, und enthält den reinen Text der Zelle. Aktivieren Sie eine Zelle, bleibt der Inhalt der Zwischenablage erhalten.
Daten in die Windows Zwischenablage kopieren
Um einen Text in die Windows Zwischenablage zu kopieren ist etwas mehr VBA Code erforderlich. Zudem ist im VBA Editor über den Menüpunkt Extras -> Verweise zu prüfen, ob die Verweisbibliothek „Microsoft Forms 2.0 Object Library“ aktiviert ist.
Die Bibliothek ist erforderlich um das Objekt HtmlFile nutzen zu können. Ist dies sichergestellt können Sie die folgende VBA Routine in ein Modul kopieren und ausführen.
Sub Zwischenablage()
'erfordert die Verweis-Bibliothek: Microsoft Forms 2.0 Object Library
Dim strText As String
Dim objHF As Object
strText = Range("C3").Value
Set objHF = CreateObject("HtmlFile")
objHF.ParentWindow.ClipboardData.SetData "text", strText
End Sub
So funktioniert das Makro
Die VBA-Routine „Zwischenablage“ kopiert den Text aus Zelle C3 in die Zwischenablage des Windows-Betriebssystems.
Die Routine beginnt damit, dass sie zwei Variablen deklariert:
-
- strText: Diese Variable wird verwendet, um den Text zu speichern, der kopiert werden soll.
-
- objHF: Diese Variable wird verwendet, um ein Objekt vom Typ „HtmlFile“ zu erstellen.
Zunächst wird der Inhalt der Zelle in die Variable strText gespeichert:
strText = Range("C3").Value
Danach wird ein Objekt vom Typ „HtmlFile“ erstellt:
Set objHF = CreateObject("HtmlFile")
Dieses Objekt wird verwendet, um die Zwischenablage des Windows-Betriebssystems zu öffnen.
In der letzten Zeile wird der Text aus der Variablen strText in die Zwischenablage kopiert:
objHF.ParentWindow.ClipboardData.SetData "text", strText
Die Methode SetData wird verwendet, um Daten in die Zwischenablage zu kopieren. In diesem Fall wird der Text in der Variablen strText mit der Datenformat-ID „text“ in die Zwischenablage kopiert.
Download
zwischenablage.xlsm
Die Exceldatei enthält ein einfaches Beispiel, wie der Inhalt einer Zelle in die Windows Zwischenablage kopiert werden kann.