プロが教えるわが家の防犯対策術!

Excel VBAで、雑誌を参考に、次の様に作りました。
Function EwWordWordOpen(totoFullName As Variant)
  Dim objWordApp As Word.Application
  Set objWordApp = CreateObject("Word.Application")
  objWordApp.Documents.Open (totoFullName)
  Set objWordApp = Nothing
End Function

↑の方法ですと、次の動作となります。
1回目は何もしない。
2回目以降は、「ファイルがロックされています。読取専用で開きますか」のMsgBoxが表示されて、OKを入力するとWordを読取専用で開きます。

次に4行目のOpen行を
  objWordApp.Documents.Open (totoFullName), ReadOnly:=True
とすると、このステートは無視される様で何も行なわれません。

正しく、Wordファイルを開く方法を教えて頂きたく、よろしくお願いします。

A 回答 (2件)

> 1回目は何もしない。



キーボードで、Alt+Ctrl+Delキーの同時押しでタスクマネージャを
確認してもらうとわかりますが、実際には指定したWordのファイルは
非表示で展開済みになっています。
(タスクマネージャ上では「WINWORD.EXE」と表示されます)

そのため、2回目以降は二重で開こうとしていることになるため、
「読み取り専用で」というMsgBoxが表示されることになります。

これ(非表示展開)を回避するためには、「Visible」プロパティを
使用します。
(最初の状態で非表示なのは、VBAでの自動処理を行う中では、
 ユーザーから隠した状態の方が一般的、ということなのかと
 思います)


Function EwWordWordOpen(totoFullName As Variant)
  Dim objWordApp As Word.Application
  Set objWordApp = CreateObject("Word.Application")
  objWordApp.Documents.Open (totoFullName)
  objWordApp.Visible = True   '←【Wordアプリケーションを可視化】
  Set objWordApp = Nothing
End Function
    • good
    • 0
この回答へのお礼

ありがとうございます。
なるほどと思いました。早速試してみます。

お礼日時:2009/08/26 22:48

Wordは開いているけれど、見えていないだけなのではないでしょうか?


>2回目以降は、「ファイルがロックされています。読取専用で開きますか」
というのが、それっぽいですね。

Openした後に
 objWordApp.Visible = True
でダメでしょうか?

>このステートは無視される様で何も行なわれません。
それもちゃんと実行されていいると思います。
(表示されていないだけ。)
    • good
    • 0
この回答へのお礼

ありがとうございます。
3~4ヶ月、悩んでいました。早速試してみます。

お礼日時:2009/08/26 22:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!