2016-04-18 9 views
0

Word文書の複数のブックマークに同じテキストを挿入するExcelマクロを使用しています。これを行うには、insertコマンドを一度指定してすべてのブックマークの場所に適用する方法があります。複数のブックマークの場所に挿入 - Excel VBA

今、私はすべてのブックマークに対して以下を行っていますか?

Dim monYear As String 
monYear = Format(DateAdd("m", -1, Now), "mmmm yyyy") 


wdApp.Selection.GoTo what:=-1, Name:="Front_Page_Month_Year" 
wdApp.Selection.TypeText monYear 

wdApp.Selection.GoTo what:=-1, Name:="Page2_Month_Year" 
wdApp.Selection.TypeText monYear 

そして、上と上....

答えて

1

複数のブックマークの場所に書き込むために単一のコマンドを使用する方法はありません。しかし、そのブックマークのコンテンツを複数の場所に表示するには、の参照のブックマークの場所が必要です。

ブックマークを作成し、ブックマークの内容を表示する各場所にの相互参照を挿入します。 (または相互参照を作成して他の場所にコピー/貼り付け)

コードのヒント:Selectionオブジェクトで使用しているアプローチは最適ではありません。 Excelの場合と同様に、選択に頼るのではなく、オブジェクトモデルで作業する方が良いです。したがって:

Dim doc as Word.Document 
Set doc = wdApp.ActiveDocument 'Note: if you're opening a document, set in the Open method 
doc.Bookmarks("Front_Page_Month_Year").Range.Text = monYear 
'When you're done, update the REF fields (references) 
doc.Fields.Update 
+0

'doc.Fields.Update'とは何ですか? – Dombey

+0

そして私はExcel VBEでプログラミングしているので、 'Bookmarks'関数は動作しません。 – Dombey

+0

相互参照はREFフィールドコードによって維持されます。更新は、フィールドを更新するよう強制します(Excelで計算を強制するように考える)。私が示しているように 'doc'を宣言してインスタンス化すると、ブックマークが動作するはずです。そうでない場合は、それがうまくいかないことを説明してください - それは関数ではなく、コレクションです。 –

関連する問題