Importieren einer Textdatei und Einfügen nach einem Lesezeichen (Microsoft Word)
James hat ein Programm außerhalb von Word, das regelmäßig automatisch eine kleine Textdatei erstellt. (Die Textdatei hat immer den gleichen Namen.) James findet es schön, ein Makro zu haben, das die Textdatei in ein Word-Dokument importieren und direkt nach einem Lesezeichen einfügen kann, das er im Dokument definiert hat.
Es gibt verschiedene Möglichkeiten, wie Sie dieses Problem angehen können. Wenn das Ziel darin besteht, einfach den aktuellen Inhalt der Textdatei einzuschließen, benötigen Sie kein Makro. Verwenden Sie einfach das Feld INCLUDETEXT, um auf die Datei zu verweisen, die Sie aufnehmen möchten. Jedes Mal, wenn Sie die Felder in Ihrem Dokument aktualisieren, geht Word aus und erfasst den aktuellen Inhalt der Textdatei und nimmt ihn in Ihr Dokument auf.
Wenn Sie Ihrem Dokument jedoch kontinuierlich den aktuellen Inhalt der Textdatei hinzufügen möchten, müssen Sie ein Makro verwenden. Ein einfacher Ansatz besteht darin, das Feld INCLUDETEXT im Makro selbst folgendermaßen zu verwenden:
Sub InsertTextFileAfterBookmark1() With Selection .GoTo what:=wdGoToBookmark, Name:="mybmk" .Fields.Add Range:=Selection.Range, _ Type:=wdFieldIncludeText, Text:="c:\\myfile.txt \c" _ & Chr(32) & "plaintext" & Chr(32) & "" .MoveLeft , 1 .Fields.Unlink .MoveEnd End With End Sub
Das Makro springt zur Position des Lesezeichens, fügt ein INCLUDETEXT-Feld ein, wählt das Feld aus und hebt die Verknüpfung auf. Das Ergebnis ist, dass der Inhalt der Textdatei in das Dokument eingefügt wird. Der Zweck des Aufhebens der Verknüpfung des Felds besteht im Wesentlichen darin, das INCLUDETEXT-Feld zu entfernen und es durch die Ergebnisse dieses Felds (den Dateiinhalt) zu ersetzen.
Um das Makro zu verwenden, ändern Sie einfach den Code, um den Namen des Lesezeichens und den vollständigen Pfad zu der Textdatei wiederzugeben, die Sie einfügen möchten. Stellen Sie außerdem sicher, dass Sie doppelte Backslashes innerhalb der Pfadspezifikation verwenden. Dies ist erforderlich, damit der Feldcode ordnungsgemäß funktioniert.
Ein anderer Ansatz besteht darin, auf das INCLUDETEXT-Feld ganz zu verzichten und einfach den Inhalt der Datei einzufügen. Die folgende Version des Makros macht genau das:
Sub InsertTextFileAfterBookmark2() If ActiveDocument.Bookmarks.Exists("mybmk") = True Then ActiveDocument.Bookmarks("mybmk").Select Selection.InsertFile FileName:="c:\myfile.txt" Else MsgBox "Bookmark ""mybmk"" does not exist!" End If End Sub
Das Makro prüft, ob das Lesezeichen mybmk vorhanden ist (Sie können und sollten dies ändern), und verwendet dann die InsertFile-Methode, um den Inhalt der Datei einzufügen. Sie sollten sich darüber im Klaren sein, dass das Makro das Lesezeichen wie geschrieben überschreibt. Wenn Sie sicherstellen möchten, dass das Lesezeichen intakt bleibt, müssen Sie kurz vor dem Einfügen der Datei eine Codezeile hinzufügen, um das Lesezeichen auf seinen Endpunkt zu reduzieren:
Selection.Collapse Direction:=wdCollapseEnd
Ihr Makro kann natürlich so ausgefallen sein, wie Sie es möchten. Das folgende Beispiel zeigt ein Makro mit allen Funktionen, mit dem Sie festlegen können, wie viel Platz zwischen dem Lesezeichen und dem einzufügenden Dateiinhalt eingefügt werden soll. Sie müssen lediglich sicherstellen, dass Sie das Makro an den Punkten (1), (2) und (3) anpassen, um zu reflektieren, wie es funktionieren soll. (Die Kommentare im Makro erläutern die Erwartungen und Optionen.)
Sub InsertTextFileAfterBookmark3() ' This macro reads the contents of a specified text file ' and inserts the text after a particular bookmark in ' the active document. Dim InsertSpacer As Integer Dim FileContent As String ' (1) Pick a number to insert something between the ' bookmark and the inserted text as spacing: ' 0 = No space. Text is inserted immediately ' after the bookmark ' 1 = Insert one space between bookmark and text ' 2 = Insert paragraph mark between bookmark and text ' 3 = Insert 2 paragraph marks between bookmark ' and text InsertSpacer = 1 ' (2) Set a constant for the name of the file to import. ' Change the file name inside the quotes below to ' the full path and file name of the text file to ' import: Const TextFile As String = "c:\myfile.txt" ' (3) Change the file name in the quotes below to the ' name of the bookmark after which you want to ' insert the text: Const BookmarkName As String = "mybmk" ' Handle errors On Error GoTo Oops ' Open and grab contents of the file Open TextFile For Input As #1 FileContent = Input(LOF(1), #1) Close #1 ' Find the bookmark in the active document Selection.GoTo What:=wdGoToBookmark, Name:="MyBookmark" ' Move the cursor to the end of the bookmark Selection.MoveRight Unit:=wdCharacter, Count:=1 Select Case InsertSpacer Case 0 ' Do nothing. Text inserted immediately Case 1 ' Insert a space Selection.TypeText Text:=" " Case 2 'Insert a paragraph mark Selection.TypeText Text:=vbCrLf Case 3 'Insert two paragraph marks Selection.TypeText Text:=vbCrLf & vbCrLf End Select ' Insert the text file: Selection.TypeText Text:=FileContent Exit Sub Oops: Select Case Err.Number Case 55 ' File already open ' Close the file Close #1 ' Try again Resume Case 53 ' File not found NotFound = "Could not find the file named: " _ & Chr(34) & TextFile & Chr(34) & vbCrLf _ & vbCrLf & "Verify the file name and path " _ & "in the macro code after " _ & Chr(34) & "Const TextFile As String =" & Chr(34) MsgBox NotFound, vbOKOnly Case Else MsgBox "Error number: " & Err.Number & ", " _ & Err.Description, vbOKOnly End Select End Sub
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der WordTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
WordTips ist Ihre Quelle für kostengünstige Microsoft Word-Schulungen.
(Microsoft Word ist die weltweit beliebteste Textverarbeitungssoftware.) Dieser Tipp (5908) gilt für Microsoft Word 2007, 2010, 2013, 2016, 2019 und Word in Office 365. Eine Version dieses Tipps finden Sie für ältere Menüoberfläche von Word hier: