1
次のプログラムは、単語テンプレートからレポートを生成しようとします。すでに存在する場合は、新しいレポートを生成するか、既存のレポートを開きます。このレポートでブックマークを更新できるようにしたいと思いますが、コピーされています。私はブックマークを複製して置き換える方法を説明したこのサイトの別のスレッドを見つけ、下のコードに挿入しました。コードはエラーなしで実行されていますが、ブックマークは更新されていないようです。 2番目のコードを実行するとコードが破損し、実行時エラー '462が表示されます。リモートサーバーマシンが存在しないか使用できなくなり、単語のブックマークに値を挿入するコードの最初の行が強調表示されます。ブックマークがもう存在しないため、これが想定されています。私は本当の初心者なので多分本当のシンプルなものです。私はすべての援助に感謝します。vbaで単語のブックマークを更新する
Set wdApp = CreateObject("word.application")
FilePath = Application.ThisWorkbook.Path & "\" & "WriteUp Template " & ActiveSheet.Name & ".docx"
If Dir(FilePath) <> "" Then
With wdApp
.Visible = True
.Activate
.documents.Open Application.ThisWorkbook.Path & "\" & "WriteUp Template " & ActiveSheet.Name & ".docx"
End With
Else
With wdApp
.Visible = True
.Activate
.documents.Add Application.ThisWorkbook.Path & "\" & "WriteUp Template.docx"
End With
End If
For Each xlName In Excel.ThisWorkbook.Names
'if xlName's name is existing in document then put the value in place of the bookmark
If wdApp.ActiveDocument.Bookmarks.Exists(xlName.Name) Then
'Copy the Bookmark's Range.
Set BMRange = wdApp.ActiveDocument.Bookmarks(xlName.Name).Range.Duplicate
BMRange.Text = Range(xlName.Value)
'Re-insert the bookmark
wdApp.ActiveDocument.Bookmarks.Add xlName.Name, BMRange
End If
Next xlName
'Insert title of Company
Set CompanyTitle = Range("B1:B20").Find("Cash Flow", , , , , , False).Offset(0, 1)
wdApp.ActiveDocument.Bookmarks("CompanyTitleCF").Range = CompanyTitle.Value
ちょっと助けてくれてありがとう。このコードを実行しようとすると、実行時エラー '91'が返されます:オブジェクト変数またはブロック変数がLine 'に設定されていない場合doc2.Bookmarks.Exists(xlName.Name)Then' – JimmyH
文書が開いて割り当てられていますか'doc2'へ。その行の直前に 'Debug.Print doc2 Is Nothing'を追加してみてください。出力は何ですか? (VBエディタのイミディエイトペイン) –