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です。)
どなたかご教示頂けますよう、よろしくお願いいたします。
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
GetObjectですか。このようなものがあるとは知りませんでした。。。
やじゅ様、ありがとうございました。
これを使うとNormal.dot*が使用中、というメッセージがでなくなりました。
ありがとうございました。
おっと、解決チェックを忘れました。
ツイート | ![]() |