VBでWordファイルの更新を行うと、更新したWordファイルを閉じるときに変なメッセージが出る

解決


かたやん  2009-05-29 18:44:15  No: 141986

VB(2008)で、以下のようにしてWordファイル(.doc)の処理をしています。

Dim objWord As Object
Dim objWordDoc As Object

objWord = CreateObject("Word.Application")
objWord.Documents.Open(指定したWordファイル名)
objWordDoc = objWord.ActiveDocument

'(ここで開いたWordファイルの編集を行う)

objWordDoc.Save()
objWord.Visible = True    'Wordを表示させる。

ここで、上記処理が終了すると、Wordが開いて上記処理で編集したWordファイルの内容を確認でき、
ユーザがそれをそのままWordで編集できるようにしたのですが、この処理を行う前にWordを立ち上げて
別のWordファイルを開いたりしている場合、上記プログラムで作成したWordファイルをWord上で閉じようとすると、
以下のエラーメッセージが表示されてしまいます。

このファイルは既に使用中のため保存できません。
(Normal.dotファイルのパス)
※Word2007の場合は、Normal.dotmファイルのパスが表示されます。

状況としては、上記プログラムを実行する前に開いているWordファイルを開いていると同時に
Normal.dotファイルをも開いているため、上記プログラムで作成したWordファイルを閉じるときに
Normal.dotを更新しようとして失敗すると思うのですが、どのようにすればこの状況を回避することができるのでしょうか?

なお、このプログラムはWord2000〜2007がインストールされているPCのいずれでも利用できるようにしたいと考えています。
(現状の利用予定はWord2003と2007です。)
どなたかご教示頂けますよう、よろしくお願いいたします。


やじゅ  2009-05-29 21:27:17  No: 141987

GetObject関数がお味噌かも
http://support.microsoft.com/kb/177097/ja

Dim wObj as Word.Application
   On Error Resume Next
   ' Get existing instance of Word if it exists.
   Set wObj = GetObject(, "Word.Application")
   If Err <> 0 then
      ' If GetObject fails, then use CreateObject instead.
      Set wObj = CreateObject("Word.Application")
   End If


かたやん  2009-05-30 07:14:29  No: 141988

GetObjectですか。このようなものがあるとは知りませんでした。。。
やじゅ様、ありがとうございました。
これを使うとNormal.dot*が使用中、というメッセージがでなくなりました。
ありがとうございました。


かたやん  2009-05-30 07:15:01  No: 141989

おっと、解決チェックを忘れました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加