Jamesには、Wordの外部に、定期的に小さなテキストファイルを自動的に作成するプログラムがあります。 (テキストファイルは常に同じ名前です。)Jamesは、テキストファイルをWord文書にインポートして、文書で定義したブックマークの直後に挿入できるマクロがあればよいと考えています。

この問題に取り組むには、いくつかの方法があります。テキストファイルの現在の内容を単純に含めることが目的の場合は、マクロは必要ありません。含めるファイルを参照するには、INCLUDETEXTフィールドを使用するだけです。ドキュメントのフィールドを更新するたびに、Wordが出力され、テキストファイルの現在の内容が取得され、ドキュメントに含まれます。

ただし、テキストファイルの現在の内容をドキュメントに継続的に追加する場合は、マクロを使用する必要があります。簡単な方法の1つは、マクロ自体の中で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フィールドを削除し、そのフィールドの結果(ファイルの内容)に置き換えることです。

マクロを使用するには、ブックマークの名前と挿入するテキストファイルへのフルパスを反映するようにコードを変更するだけです。また、パス指定内で必ず二重の円記号を使用してください。これは、フィールドコードが正しく機能するために必要です。

もう1つのアプローチは、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_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

link:/ wordribbon-WordTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]

_WordTips_は、費用効果の高いMicrosoftWordトレーニングのソースです。

(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(5908)は、Microsoft Word 2007、2010、2013、2016、2019、およびOffice 365のWordに適用されます。このヒントのバージョンは、ここにWordの古いメニューインターフェイス:

link:/ word-Importing_a_Text_File_and_Inserting_after_a_Bookmark [テキストファイルのインポートとブックマークの後に挿入]