• ベストアンサー

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

  • tt246
  • お礼率91% (116/127)

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

> 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

tt246
質問者

お礼

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

その他の回答 (1)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

Wordは開いているけれど、見えていないだけなのではないでしょうか? >2回目以降は、「ファイルがロックされています。読取専用で開きますか」 というのが、それっぽいですね。 Openした後に  objWordApp.Visible = True でダメでしょうか? >このステートは無視される様で何も行なわれません。 それもちゃんと実行されていいると思います。 (表示されていないだけ。)

tt246
質問者

お礼

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

関連するQ&A

  • ショートカットExellファイルのオープン

    お世話になっています。 カレントフォルダにあるExcelファイルを開くには次の関数を作成して実現しています。 Function ExWorkbooksOpen(myOpenXlsName As Variant) Dim myWb As Workbook Dim totoFullName As Variant Set myWb = ActiveWorkbook totoFullName = myWb.Path & "\" & myOpenXlsName Workbooks.Open Filename:=totoFullName Set myWb = Nothing End Function この方法ですと、別のフォルダにあるExellファイルを開く事はできません。 そこで、ショートカットファイルをカレントフォルダへ置いて開く事を考えていますが、どの様にオープンしていいのか分かりません。 アドバイスをよろしくお願いします。

  • Excel2010VBAからWordの呼び出し

    お世話になります。 Excel2003VBAで、次の様にWordファイルをオープンしていました。 Dim boReadOnly As Boolean Dim objWord As Word.Application boReadOnly = True Set objWord = CreateObject("Word.Application") With objWord .Documents.Open toFullName, ReadOnly:=boReadOnly .Visible = True End With これを、Excel2010VBAへ移植すると、WordファイルがExecelの後方に隠れて表示されてしまいます。 暫定として、.Visibleの次行に、   .Activate を追加しています。これを行なうと、Startアイコンの→横に、Wordアイコンが点滅するので、 Wordがオープンした事はわかります。 Wordファイルを呼び出し元のExcelの前面に表示させるには、どうすればいいでしょうか? 御教示よろしくお願いします。

  • エクセルのマクロを利用したワードの開き方

    エクセルのマクロを利用したワードの開き方を教えてください。よろしくおねがいします。ちなみにコードは Option Explicit Dim 行, ドライブ, 親フォルダ, 子フォルダ, ファイル名, 拡張子, パス Dim フルパス As String Dim ワード As Object Dim ワード文書 As Object Sub 環境リストボックスでクリックされた() 行 = Worksheets("呼出").Cells(2, 1) + 1 管理表シートから値を取り出す 選択されたファイルを開く End Sub Private Sub 管理表シートから値を取り出す() ドライブ = Worksheets("管理表").Cells(行, 2) 親フォルダ = Worksheets("管理表").Cells(行, 3) 子フォルダ = Worksheets("管理表").Cells(行, 4) ファイル名 = Worksheets("管理表").Cells(行, 5) 拡張子 = Worksheets("管理表").Cells(行, 6) End Sub Private Sub 選択されたファイルを開く() ChDrive ドライブ パス = ドライブ & "\" & 親フォルダ & "\" & 子フォルダ ChDir "C:\ときめき\環境" If 拡張子 = "xls" Then Workbooks.Open Filename:=ファイル名 & ".xls", ReadOnly:=True ElseIf 拡張子 = "doc" Then フルパス = パス & "\" & ファイル名 & ".doc" 'フルパスを作成 Set ワード = CreateObject("Word.Application") 'Wordを起動する ワード.Visible = True 'Wordを表示する Set ワード文書 = ワード.documents.Open(フルパス) 'Word文書を開く End If End Sub となっています。 あと、OSはwindowsMeで ソフトはエクセル、ワード共に2000を利用しています。 よろしくおねがいします。

  • Excel、Wordファイルが読取り専用になる

    Excel、Wordファイルをフォルダに入れると、読取り専用になってしまう。ファイル個々には「読取り専用」のチェックは付けていません。 フォルダに入れても「読取り専用」にしたくないのですが、何か良い 方法はありませんか? OS:WinXP ofice:2003

  • WORD VBAでテキストファイルを指定して...

    WORD2002を使っています。 WORD VBAでダイアログボックスを表示させ、オープンするファイルを指定しようとしています。 Documents.Open FileName:=dlg.Name, ReadOnly:=True でオープンするファイルがテキストファイルだけなので、ダイアログボックスに表示するファイルをテキストファイルだけにしたいと思っています。 どのように変更すればいいのでしょうか?

  • excel VBAを利用し、テンプレートとなるワードファイルの一部分を

    excel VBAを利用し、テンプレートとなるワードファイルの一部分をエクセルデータで 置換を行い、新しいワードファイルとして保存するという処理を作成しています。 [環境] Windows Vista Office 2007 差し込み文書ではなく個別にファイルを作りたいという条件があります。 処理としては、 テンプレートを開く→置換を実施→別名で保存→テンプレートを変更せず閉じる を繰り返し実施しています。 ただ、このやり方ですと最後の閉じる処理を行った際に、 「wordは、動作を停止しました」というエラーメッセージが頻繁に出てしまいます。 出来上がったファイル自体は問題なく読めているんですが。 処理自体に問題があるんでしょうか? VBA自体初心者であり、他に良い方法などありましたらご教示いただけたら助かります。 #処理内容はだいぶ簡略化しています。 Public Function output_word2()   Dim word        As New word.Application   Dim document      As word.document   Dim file_name      As String   Dim output       As String   Dim path        As String   Dim row        As Integer      Sheets(CALC_SHEET).Select 'データ取得用シート   path = Application.ActiveWorkbook.path   file_name = path & "\xxxxxx.doc"          '元の文書   row = 3   Do     If Range("B" & row).Value = "" Then       Exit Do     End If          With word       .Documents.Open Filename:=file_name       Set document = .ActiveDocument     End With          word.Selection.Find.Text = "{置換対象文字}"     word.Selection.Find.Forward = True     word.Selection.Find.Replacement.Text = Range("C" & row).Value     word.Selection.Find.Execute , , , , , , , , , , wdReplaceAll          output = path & "\output\" & Range("C" & row).Value  & ".doc"          document.SaveAs Filename:=output   '置換後のword文書を別名で保存     document.Close SaveChanges:=False     word.Quit     row = row + 1     Set word = Nothing     Set document = Nothing   Loop End Function

  • VB.NETで、テキストファイルを読取専用で開く

    VB.NET、Windowsフォームで、Buttonを押したらあるテキストファイルを読取専用で開く、という事をしたいと思っています。 Dim fileName As String = "c:\test.txt" '読取専用にする File.SetAttributes(fileName, File.GetAttributes(fileName) Or FileAttributes.ReadOnly) 'ファイル開く System.Diagnostics.Process.Start(fileName) '読取専用を解除 File.SetAttributes(fileName, myAttr Xor FileAttributes.ReadOnly) 上記のように記述したのですが、読取専用にはなるのですが、ファイルに変更を加えてそのまま保存出来てしまいます。 何か良い方法はないでしょうか?

  • FD内のエクセルファイルが開けません。

    エクセルやワード(例えば)で作成したファイルを何らかの作業ミスで 開けなくなる事がありますよね。 エラーメッセージは 「‘~ファイル名~’にアクセスできません。ファイルは読取専用か、または 読み取り専用の場所にアクセスしようとしています。 またはサーバー上に保存されているドキュメントに応答がありません」 というものなんですが こういう時どうすれば開けるようになるのでしょうか? ファイルの属性変えても開けませんでした。 何方か御教えください。 宜しくお願いします。

  • FD内のエクセルファイルが開けません。

    エクセルやワード(例えば)で作成したファイルを何らかの作業ミスで 開けなくなる事がありますよね。 エラーメッセージは 「‘~ファイル名~’にアクセスできません。ファイルは読取専用か、または 読み取り専用の場所にアクセスしようとしています。 またはサーバー上に保存されているドキュメントに応答がありません」 というものなんですが こういう時どうすれば開けるようになるのでしょうか? ファイルの属性変えても開けませんでした。 何方か御教えください。 宜しくお願いします。

  • Excel VBAで呼び出したWordが文書への差し込みボタンが効かない状態で開く

    以下のExcel VBAでWordは開くのですが、新規文書への差し込みボタンが、活きていないです。参照設定は、Microsoft Word 11.0 Object Libraryを入れています。 どうしたらいいのでしょうか?困っています。 Sub Wordを開き、差し込み印刷する() Dim ワード As Object Dim ワード文書 As Object Dim フルパス As String フルパス = "D:\案内状.doc"          'フルパスを作成 Set ワード = CreateObject("Word.Application") 'Wordを起動 ワード.Visible =True 'Wordを表示 Set ワード文書 = ワード.documents.Open(フルパス) 'Word文書を開く End Sub

専門家に質問してみよう