'1. ReadOnly:=Trueで開く
Set WordDoc = WordApp.Documents.Open(場所,ReadOnly:=True)
理由
Excel VBAでWordファイルを操作する際、対象のドキュメントがすでに他のプロセスで開かれている場合、排他制御(ロック)がかかります。この状態では、ファイルが書き込み可能モードで開けず、以下のようなメッセージが表示されます。
主な原因
-
ユーザーが手動でWordを開いている。
-
VBAや他のアプリケーションが、前回の実行後にWordインスタンスを終了し損ねている(
objWord.Quitが実行されていない)。 -
バックグラウンドでWordプロセスが終了せず残っている。
-
ReadOnly:=Trueを指定して開くことで、他プロセスによるロックの影響を受けずに読み込み専用として開ける。 -
マクロ終了時に必ず以下を実行するようにしてください。
-
objWord.Quit Set objWord = Nothingこれにより、Wordインスタンスを確実に終了し、プロセスが残ることによるロックを回避します。
