Problem:
Vielleicht ist Ihnen auch schon aufgefallen, dass in Word leider eine Möglichkeit fehlt, direkt per VBA-Kommando den Inhalt der Zwischenablage zu löschen ‑ so wie dies in anderen Programmiersprachen oder in anderen VBA-Objektmodellen möglich ist. Der Inhalt lässt sich nur löschen, indem etwas anderes - am besten »nichts« - in die Zwischenablage kopiert wird.
Lösung:
Wird in die Zwischenablage »nichts« kopiert - dies wird am besten durch einen Leer-String (= zwei unmittelbar aufeinander folgende doppelte Anführungszeichen) erreicht ‑, wird der vorhandene Inhalt der Zwischenablage durch den neuen Inhalt ersetzt - die Zwischenablage ist leer. Für das Kopieren kommt immer das VBA-Copy-Kommando zum Einsatz. Der Einsatz des Copy-Kommandos setzt ein Objekt voraus, auf das sich das Kommando bezieht. In unserem Beispiel soll dies das Selection-Objekt (der markierte Text) sein.
Folgende Vorgehensweise führt zum Ziel:
- Word 2007: Wechseln Sie auf das Register ENTWICKLERTOOLS. Klicken Sie dann in der Optionsgruppe CODE auf das Symbol VISUAL BASIC. Falls das Register ENTWICKLERTOOLS nicht angezeigt wird, müssen Sie dies zuerst einmalig einschalten: Klicken Sie auf die OFFICE-Schaltfläche und in dem jetzt angezeigten Menü auf die Schaltfläche WORD-OPTIONEN. Es öffnet sich ein weiteres Dialogfenster, in dem Sie auf der linken Seite den Befehl HÄUFIG VERWENDET auswählen. Schalten Sie nun auf der rechten Seite das Kontrollkästchen ENTWICKLERREGISTERKARTE IN DER MULTIFUNKTIONSLEISTE ANZEIGEN ein.
Alternativ dazu können Sie auch die Tastenkombination Alt + F11 drücken. - Word 2003, 2002/XP und 2000: Wechseln Sie über das Menü EXTRAS-MAKRO, Befehl VISUAL-BASIC-EDITOR in den Visual Basic-Editor. Alternativ dazu können Sie auch die Tastenkombination Alt + F11 drücken.
- Wählen Sie jetzt im VBA-Editor auf der linken Seite im Projekt-Explorer die Datei, in der Sie den VBA-Programmcode eingeben. Standardmäßig ist hier die aktuelle Datei ausgewählt. Sofern Sie die Lösung nicht in einer speziellen Dokumentvorlage ablegen, wählen Sie im Projekt-Explorer »Normal« aus und legen dort beispielsweise ein neues Modul an (Menü EINFÜGEN, Befehl MODUL). Dann steht die Lösung immer zur Verfügung.
- Im nächsten Schritt müssen Sie einen Verweis auf eine Objektbibliothek setzen. In Objektbibliotheken sind alle VBA-Kommandos, Eigenschaften und Methoden thematisch in Gruppen zusammengefasst. Sie benötigen eine Objektbibliothek, in der sich ein Objekt befindet, mit dessen Hilfe Sie das Copy-Kommando nutzen können (ohne dass dabei Ihr Text geändert wird). Die hierzu geeignete Objektbibliothek heißt MICROSOFT FORMS 2.0 OBJECT LIBRARY und steht mit allen anderen Objektbibliotheken im Menü EXTRAS, Befehl VERWEISE zur Auswahl. Um die Objektbibliothek einzuschalten, müssen Sie einfach das Kontrollkästchen vor dem Eintrag einschalten.
- Taucht die MICROSOFT FORMS 2.0 OBJECT LIBRARY in der (alphabetischen) Liste mit allen Objektbibliotheken nicht auf? Dann schließen Sie das VERWEISE-Dialogfenster. Fügen Sie anschließend im aktuellen Projekt (= »Normal«) über das Menü EINFÜGEN, Befehl USERFORM ein Form ein, das Sie nicht weiter nutzen. Somit wird automatisch die Objektbibliothek MICROSOFT FORMS 2.0 OBJECT LIBRARY aktiviert.
- Nachdem Sie zu Ihrem Modul zurückgekehrt sind, geben Sie dort folgenden VBA-Programmcode ein:
Sub ZwischenablageLöschen()
Dim objTemp As DataObject
Set objTemp = New DataObject
objTemp.SetText “”
objTemp.PutInClipboard
Set objTemp = Nothing
End Sub
So funktioniert das Makro:
In der Routine wird in den beiden ersten Zeilen das Objekt »objTemp« instanziert. Dies ist nur möglich, wenn der Verweis zuvor gesetzt wurde, da sonst der hierzu benötigte Objekt-Typ »DataObject« nicht zur Verfügung steht. Dann wird dem Objekt mit »SetText« ein leerer Inhalt zugewiesen. Der Inhalt des Objekts wird nun mit »PutInClipboard« der Zwischenablage übergeben - die somit leer ist. Die letzte Zeile räumt wieder auf und löscht das anfangs instanzierte Objekt.
Ab sofort können Sie mithilfe dieser Routine komfortabel den Inhalt der Windows-Zwischenablage löschen.
Beachten Sie, dass die Objektbibliothek für jedes Dokument bzw. jede Dokumentvorlage getrennt eingeschaltet werden muss. Wenn Sie den nachfolgend vorgestellten Programmcode später einmal in eine eigene Dokumentvorlage übernehmen, müssen Sie dort die Objektbibliothek erneut einschalten.
Word (wie alle anderen Office-Programme) besitzt je nach Version bis zu 24 »eigene« Office-Zwischenablagen. Die hier vorgestellte Methode löscht immer nur die Windows-Zwischenablage. Auf die Office-eigenen können Sie damit nicht zugreifen!