导入文本文件并在书签后插入(Microsoft Word)
James在Word外部有一个程序,该程序会定期自动创建一个小的文本文件。 (文本文件始终具有相同的名称。)James认为,拥有一个宏可以将文本文件导入到Word文档中,然后在他在文档中定义的书签之后立即插入宏,将是很好的选择。
有两种方法可以解决此问题。如果目标是简单地包含文本文件的当前内容,则不需要宏,只需使用INCLUDETEXT字段来引用要包含的文件。每次更新文档中的字段时,Word都会消失并获取文本文件的当前内容,并将其包含在文档中。
但是,如果您要继续将文本文件的当前内容添加到文档中,则需要使用宏。一种简单的方法是以这种方式使用宏本身内的INCLUDETEXT字段:
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
宏跳转到书签的位置,插入INCLUDETEXT字段,选择该字段,然后取消链接。结果是将文本文件的内容插入到文档中。取消链接该字段的目的实质上是摆脱INCLUDETEXT字段,将其替换为该字段的结果(文件内容)。
要使用该宏,只需更改代码以反映书签的名称以及要插入的文本文件的完整路径。另外,请确保在路径规范内使用双反斜杠;这是域代码正常工作所必需的。
另一种方法是完全放弃INCLUDETEXT字段,而只是插入文件的内容。下面的宏版本可以做到这一点:
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
宏检查是否存在名为mybmk的书签(您可以并且应该更改它),然后使用InsertFile方法插入文件的内容。您应该意识到,如所写,宏将覆盖书签。如果要确保书签保持不变,则需要在插入文件之前添加一行代码以将书签折叠到其端点:
Selection.Collapse Direction:=wdCollapseEnd
当然,您的宏可以随心所欲。下面的示例显示了一个功能更全的宏,它使您可以选择指定在书签和要插入的文件内容之间放置多少空间。您需要做的就是确保在点(1),(2)和(3)处调整宏以反映其操作方式。 (宏中的注释解释了期望和选项。)
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
注意:
如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)上描述的宏,我准备了一个包含有用信息的特殊页面。
_WordTips_是您进行经济有效的Microsoft Word培训的来源。
(Microsoft Word是世界上最流行的文字处理软件。)此技巧(12193)适用于Microsoft Word 97、2000、2002和2003。您可以找到用于Word(Word 2007)的功能区界面的该技巧的版本。和更高版本)在这里: