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 (12193) gilt für Microsoft Word 97, 2000, 2002 und 2003. Sie finden eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Word (Word 2007) und später) hier: