Visual Basic for Application, kurz VBA, ist eine sehr praktische Programmiersprache innerhalb der Microsoft-Office-Welt, mit der man viele routinemäßoge Aufgaben automatisieren kann. So kann man im Outlook Anhänge automatisch an den Drucker senden, auf dem Laufwerk Ordner anlegen, um einen E-Mail-Anhang zu speichern oder mit Formularen komplette Benutzerinteraktionen zu tätigen.
Als VBA-Programmierer kommt man dann auch schnell an den Punkt, wo man mit der Zwischenablage arbeiten muss, zum Beispiel um Strings (Texte) aus einer anderen Anwendung der VBA-Anwendung zur Verfügung zu stellen. Oder umgekehrt, um einen Text aus der VBA-Anwendung, zum Beispiel den Text einer bestimmten Excel-Zelle, in einer anderen Anwendung einzufügen.
VBA-Code: Text aus Zwischenablage einfügen
Man könnte beispielsweise einen kopierten Dateipfad oder URL einem Office-Dokument automatisch zur Verfügung stellen und zur Weiterbearbeitung markieren. Der Code, um den kopierten Text aus der Zwischenablage auszulesen sieht wie folgt aus:
'Gibt den Text aus Zwischenspeicher zurück, sofern Text im Zwischenspeicher vorhanden
Private Function GetTextFromClipboard() As String
Dim dObj As New DataObject
'Gib bei anderem Format, z.B. wenn Bilddatei in Zwischenablage ist, einen leeren String zurück
On Error Resume Next
dObj.GetFromClipboard
GetTextFromClipboard = dObj.GetText
End Function
Nun kann man diese Funktion verwenden, um zum Beispiel den Text aus der Zwischenablage einer Textbox in einem VBA-Formular zu übergeben:
MyForm.MyTextBox.Text = GetTextFromClipboard
VBA-Code: Text der Zwischenablage hinzufügen
Umgekehrt kann man auch Text mit VBA automatisch der Zwischenablage hinzufügen. Vielleicht, weil man per Makro, den Text eines Word-Dokument in die Zwischenablage kopieren möchte, um dieses in einem Authoring-Tool per Strg+V wieder einzufügen. Der Code dafür sieht wie folgt aus:
'Schreibt einen Text in dies Zwischenablage
Private Sub WriteTextToClipboard(strText As String)
Dim dObj As New DataObject
dObj.SetText strText
dObj.PutInClipboard
End Sub
Der Aufruf der Methode innerhalb des VBA-Codes erfolgt dann so:
WriteTextToClipboard "Meine Oma fährt im Hühnerstall Motorad."