- ベストアンサー
エクセルから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ファイルを開く方法を教えて頂きたく、よろしくお願いします。
- みんなの回答 (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
その他の回答 (1)
- fujillin
- ベストアンサー率61% (1594/2576)
Wordは開いているけれど、見えていないだけなのではないでしょうか? >2回目以降は、「ファイルがロックされています。読取専用で開きますか」 というのが、それっぽいですね。 Openした後に objWordApp.Visible = True でダメでしょうか? >このステートは無視される様で何も行なわれません。 それもちゃんと実行されていいると思います。 (表示されていないだけ。)
お礼
ありがとうございます。 3~4ヶ月、悩んでいました。早速試してみます。
お礼
ありがとうございます。 なるほどと思いました。早速試してみます。