![]() |
||
![]() |
Inhalt aus der Zwischenablage mit einem Makro bearbeitenSeit Wochen versuche ich, ein Makro zu entwerfen, das in ein Word-Dokument den Text einer anderen Datei einfⁿgt. Dabei soll das Makro den Namen der einzufⁿgenden Datei aus der Zwischenablage ⁿbernehmen. Ich finde allerdings keinen Weg, diese Anforderung umzusetzen. Ein Versuch ⁿber den Befehl ╗Selection.Paste½ schlug fehl, obwohl beim manuellen Vorgang das Einfⁿgen aus der Zwischenablage ⁿber [Strg]+[V] m÷glich ist. K÷nnen Sie mir helfen? Es gibt keine M÷glichkeit, bei der Anweisung ╗Selection.InsertFile½ den Namen der einzufⁿgenden Datei direkt aus der Zwischenablage zu lesen. Aus diesem Grund ist es sinnvoll, den Namen der Datei in eine Variable vom Typ ╗string½ zu schreiben. Die k÷nnen Sie dann problemlos mit einem Befehl ansprechen. An dieser Stelle entsteht aber ein zweites Problem, denn es existiert auch kein direkter Weg, von der Zwischenablage aus eine solche Variable zu belegen. Daher mⁿssen Sie einen Umweg nehmen, und zwar ⁿber das VBA-Objekt ╗DataObject½. Im folgenden haben wir eine VBA-Prozedur abgedruckt, die das Objekt ╗DataObject½ sowie seine Methoden richtig benutzt. Public Sub GetClipBoardText () Dim MyData As DataObject Dim sClipText As String Set MyData = New DataObject On Error GoTo NotText MyData.GetFromClipboard sClipText = MyData.GetText (1) ChangeFileOpenDirectory "C:\Temp\" Selection.InsertFile FileName:=sClipText, Range:="", _ ConfirmConversions:=False, Link:=False, Attachment:=False NotText: If Err <> 0 Then MsgBox "In der Zwischenablage war kein Text!" End If End SubBei ╗DataObject½ handelt es sich um eine Ablage von formatierten Textdaten. Das Objekt kann mehrere Elemente enthalten, die aber von unterschiedlichen Formaten sein mⁿssen. Mit der ╗DataObject½-Methode ╗GetFromClipboard½ kopieren Sie Daten aus der Zwischenablage nach ╗DataObject½, bevor Sie diese mit Hilfe der Methode ╗GetText(1)½ in eine ╗string½-Variable schreiben. Das in Klammern stehende Argument von ╗GetText½ definiert das Format, das bearbeitet werden soll, wobei die ╗1½ fⁿr das Textformat steht und die Grundeinstellung ist. Nun k÷nnen Sie einfach ⁿber die Methode ╗Selection.InsertFile½ die Datei einfⁿgen. Denn deren Namen kann die Anweisung aus der ╗string½-Variablen lesen. Der Befehl ╗ChangeFileOpenDirectory½ legt den Ordner fest, in dem Word nach Dokumenten sucht. So zeigt das Programm zum Beispiel den Inhalt dieses Ordners, wenn Sie das nΣchste Mal den Menⁿbefehl ╗Datei | ╓ffnen½ wΣhlen. Sie k÷nnen diese Anweisung nutzen, falls alle einzufⁿgenden Dateien in einem speziellen Ordner zu finden sind. In unserem Beispiel ist das C:\TEMP. Sollten die Dateien allerdings aus unterschiedlichen Verzeichnissen stammen, mⁿssen Sie gewΣhrleisten, dass in der Zwischenablage immer der komplette Pfad zu dieser Datei liegt. |
![]() |