みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルからWordファイルをオープン

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ファイルを開く方法を教えて頂きたく、よろしくお願いします。

投稿日時 - 2009-08-26 17:55:47

QNo.5238685

困ってます

質問者が選んだベストアンサー

> 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

投稿日時 - 2009-08-26 18:51:02

お礼

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

投稿日時 - 2009-08-26 22:48:47

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

Wordは開いているけれど、見えていないだけなのではないでしょうか?
>2回目以降は、「ファイルがロックされています。読取専用で開きますか」
というのが、それっぽいですね。

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

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

投稿日時 - 2009-08-26 18:57:35

お礼

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

投稿日時 - 2009-08-26 22:50:33

あなたにオススメの質問