データをスプレッドシートに入れ、Word からそれぞれのセルにリンクすることで、3 つの異なる Word ドキュメント間で特定の情報 (名前、日付、番号など) を自動的に更新しようとしています。スプレッドシートには、スプレッドシートの一部を内部的に自動更新するマクロが含まれています。
Word ドキュメントのリンクを更新することを除いて、すべて正常に動作しています。Word でリンクを右クリックして [リンクの更新] オプションを選択してリンクを更新しようとすると、スプレッドシートのマクロ警告ダイアログが表示され、マクロを有効にするかどうかを尋ねられます。これは一度だけではなく、更新プロセスに 20 秒ほどかかります (私には異常に長いようです)。したがって、リンクの更新は機能しますが、「マクロのアクティブ化」ボタンを数十回クリックする意思がある場合に限ります。
VBA を使用して Word からドキュメント内のすべてのフィールドを自動更新しようとしましたが、同じ問題が発生し、マクロ ダイアログが 30 分間絶えず表示されます。そのための私のコードは次のとおりです。
Sub UpdateFields()
ActiveDocument.Fields.Update
End Sub
また、Word ドキュメントをスプレッドシートから直接更新しようとしましたが、Excel が VBA 経由で Word ドキュメントを開こうとすると、プログラムの実行が停止し、次のエラーが表示されるため、どちらも機能しません。
「Excel は、別のアプリケーションが OLE アクションを完了するのを待っています。」
[OK] をクリックして待機しても、数秒後にエラー メッセージが再び表示されるため、問題は解決しません。エラー メッセージを停止するには、Excel プロセスを手動で強制終了するしかありません。
これが私のExcelマクロコードです:
Sub LoopThroughFiles()
Path = Application.ActiveWorkbook.Path
Dim WordFile As String
WordFile = Dir(Path & "\*.doc")
Do While Len(WordFile) > 0
Run Update(Path & "\" & WordFile)
WordFile = Dir
Loop
End Sub
Function Update(Filepath As String)
Dim WordDoc As Word.Document
Set WordApplication = CreateObject("Word.Application")
Set WordDoc = WordApplication.Documents.Open(Filepath) 'This produces the error
ActiveDocument.Fields.Update
End Function
フォルダー内のファイルは 3 つのドキュメントとスプレッドシートのみであり、プログラムは問題なくファイルを見つけることに注意してください。
私はオンラインで解決策を検索しましたが、誰かが VBA で行うことはかなり一般的であるように思われるため、実際には何も見つかりませんでした。繰り返しになりますが、私は VBA の経験がほとんどないため、ポイントを完全に見逃している可能性があり、私が気付いていない非常に簡単な解決策があります。