Excel2010VBAからWordを開く

このQ&Aのポイント
  • Excel2010VBAからWordを開く方法について質問です。
  • Excel2003VBAでWordファイルをオープンする方法をExcel2010VBAに移植したいが、文章が開かれない問題が発生しています。
  • 一時的な対処法として、.Visibleの次に.Activateを追加することで、Wordが開かれたことを確認できるが、再起動後に問題が再発します。解決策を教えてください。
回答を見る
  • ベストアンサー

Excel2010VBAから Wordを開く

お世話になります。 半年前に質問し、一時は解決したつもりでしたがまだ未解決な為、再質問しますy。 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(Window7、主メモリ4G)へ移植すると、Wordは立ち上がりますが、文章は開いてくれません。(これが問題点です。) 暫定として、.Visibleの次行に、   .Activate を追加しています。これを行なうと、Startアイコンの→横に、Wordアイコンが点滅するので、 Wordがオープンした事はわかります。 また、VBAのソースをいじっている時に実行すると、Word文章も正しく開ける場合もあります!! この現象はExeclVBAを再起動すると、元のWordだけ立ち上がる現象に戻ってしまいます。 どこか手順または実行条件が違う様な気がします。 Word文章を正しく開きたいのですが、御教示よろしくお願いします。

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

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

  • ベストアンサー
  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.1

toFullName を指定するコードが書かれていないため、 提示のコードでは、Excel2003VBA でも動きません。 toFullName を指定するコードに問題があるのでは?

tt246
質問者

お礼

質問して2週間経過のアナウンスメールが来てしまいました。 ご回答ありがとうございます。 toFullNameの内容が正しい事は確認していますが、しっくりしません。 文章なしのWordが立ち上がります。スタート横のWをクリックすると指定文書を開く事が出来ます。 VBEでこの辺りのソースを色々変更していると、一発で文書が開けますが、Excelを保存して再立ち上げしてWordを呼び出すと、元通りの文章なしのWordしか開けません。 見た目は、Execlの表示が居座っていると、Wordが文章を読み込めない様にも見えます。 作成したVBAソースのどこかに不具合がある可能性もあるのですが、 どうも、Execlの表示を最小化して、Wordを呼び出すと、一発で文書が開ける様で、この方向で検討中ですが、根本的な解決方法ではないので、困っています。

関連するQ&A

  • 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の前面に表示させるには、どうすればいいでしょうか? 御教示よろしくお願いします。

  • ACCESS VBA からのワードファイルの起動

    ACCESS97を(未だに!)使用しています。 これから、VBAでワードの既存ファイルを起動したいと考えています。その際、ワードを新規に立ち上げることなく、表示して編集したいわけですが、どうしても新規に起動してしまします。 これまで試したのは、 Dim oApp As Object Set oApp = GetObject("", "word.Application") oApp.Visible = True oApp.Documents.Open FileName:="C:\filename.doc" および Dim oApp As Object Set oApp = CreatObject("word.Application") oApp.Visible = True oApp.Documents.Open FileName:="C:\filename.doc" などです。 しかし、すでにワードが起動していても、どうしても、新たにワードを立ち上げてしまいます。 解決策はあるでしょうか? ちなみにエクセルだと、GetObject で既に起動しているエクセルに追加でアプリが表示されます。

  • vbs autoOpenを有効でWordを起動時

    VBSでWordを起動させるvbsを作成しました。 ただ、起動時にWord内に記載してあるautoOpen()を実行させたいのですが、やり方がわかりません。 Excelの場合は、以下のコードで良いことを知っているのですが、Wordが解りません。 オブジェクト名.RunAutoMacros xlAutoOpen どうすればよいでしょうか? ----------コード----------------- 'Wordオブジェクトを作成 Dim objWord Set objWord = WScript.CreateObject("Word.Application") objWord.Visible = True 'Wordファイルを開く objWord.Documents.Open "ファイルのパス" objWord.RunAutoMacros xlAutoOpen ←ここが不明

  • エクセルVBAでワード文書をPDF保存

    質問の仕方が悪かったようですので先日の質問 https://okwave.jp/qa/q9876787.html を取り消し、再度質問させていただきます。 エクセル2016のワークシート上にオブジェクトの挿入でワードの文書ファイルをアイコンで貼り付けています。VBAでこの文書ファイルを開き、PDFとして保存しようと思います。 見よう見まねで以下のようなコードを書いてみまた。 '参照設定 Microsoft Word 16.0 Object Library Sub test01() Dim objWord As Word.Application Set objWord = CreateObject("Word.Application") objWord.Visible = True Dim objDoc As Word.Document Dim FileName As String FileName = Application.GetSaveAsFilename(, "PDFファイル,*.pdf", , "PDF保存") Set objDoc = Worksheets("Sheet1").OLEObjects(1).Verb(Verb:=xlVerbOpen) objDoc.ExportAsFixedFormat OutputFileName:=FileName, ExportFormat:=wdExportFormatPDF objDoc.Close End Sub これで、文書ファイルは開くのですが、「オブジェクトが必要です」のエラーがでて、Set objDocがEmptyのままPDF保存ができません。どのように直せばいいのでしょうか? ご教示ください。

  • 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

  • Word vbaからexcel vbaへ値を渡すことができますか?

    Word vbaからexcel vbaへ値を渡すことができますか? 現在Wordでvbaを組んでいますが、Wordで取得した値をexcel vbaで利用したいのに変数の値がnullになってしまい四苦八苦しています。Application間で値を渡すには何か特別な処理がいるのでしょうか?(参照は設定済みです) やりたい事は、Wordで「ShipTo」文字列をsearch→後ろの番号を変数へ格納→excel vbaを起動→シートの表中からWordで取得した番号を元に文字列を検索しセルに入れる(VLOOKUPを使用)→セルの文字列をWord vbaへ返しWord側で利用、という処理です。excel vbaの起動は以下のように記述しています。 ------------------excelVBAの起動 Sub getExcelTable() Dim xLobj As Object, myObj As Object Set xLobj = CreateObject("excel.application") xLobj.Visible = True Set myObj = xLobj: workbooks.Open (ThisDocument.Path & "\sample.xls") myObj.Run ("'sample.xls'!getStr") MsgBox strA ←これがでない MsgBox strB ←これがでない Set xLobj = Nothing End Sub -----------------excel vbaのコード Option Explicit Dim endRow As Integer, ShipTo As Variant Dim strA As Variant, strB As Variant Sub getStr() endRow = Range("a65536").End(xlUp).Row MsgBox ShipTo ←これがでない Cells(endRow + 2, 1).Select Selection.Value = "=VLOOKUP(" & ShipTo & ",$A$1:$T$" & endRow & ",3,0)" strA = ActiveCell.Text Cells(endRow + 2, 2).Select Selection.Value = "=VLOOKUP(" & ShipTo & ",$A$1:$T$" & endRow & ",13,0)" strB = ActiveCell.Text End Sub Word vbaからexcel vbaは起動します。Word側、excel側で使う関数はグローバル変数にし、variant型にしてみましたが値がわたりません(Wordでは取得できています)。Application間で値を渡す方法、もしくは根本的にもっとうまい方法があればご教示ください! WinXP、Office2003を使用です。

  • EXCEL/VBA:WORDファイルの上書き保存を確認する方法

    以下のvbaを実行すると、次のように動作します。   test1.xlsを開いて、Atest1.xlsの名前で保存するときに、既にファイルが存在する場合、excelでは上書き保存するか聞いてきます。  しかし、test1.docを開いて、Atest1.docの名前で保存するときは、いきなり上書き保存されます。 wordの場合も上書き保存するか聞くようにするには、どうしたら良いか教えてください。 Workbooks.OpenText Filename:="test1.xls" ActiveWorkbook.SaveAs Filename:="Atest1.xls" ActiveWindow.Close Dim wordApp As Word.Application Dim wordDoc As Word.Document Dim wordRange As Word.Range Set wordApp = New Word.Application wordApp.Visible = True Set wordDoc = wordApp.Documents.Open(ThisWorkbook.Path & "\test1.doc") Set wordRange = wordDoc.Content wordDoc.SaveAs Filename:="Atest1.doc" wordDoc.Close wordApp.Quit

  • ACCESS VBA を勉強中のものです。

    勉強のため購入した本(※VBA逆引き大全)からサンプルがダウンロードできたので,下記の構文で実行したところ,フォーム上の会社名を,Wordに「~様」と挿入することができました。 Private Sub cmd実行_Click() Dim Appwo As Word.Application Dim doc As Word.Document Dim stPath As String Dim stName As String stName = Me.txt会社名 stPath = "C:\Users\pigo\Desktop\納品書.docx" Set Appwo = CreateObject("Word.Application") Set doc = Appwo.Documents.Open(stPath) Appwo.Visible = True With Appwo.Selection .Find.Text = "様" .Find.Execute .InsertBefore stName .Font.Size = 12 .Font.Bold = True End With Set Appwo = Nothing Set doc = Nothing End Sub ここで質問なのですが,フォーム上には会社名に加え,そのほかにもWordへと挿入したいテキストボックス(※部署名,担当者名など)が複数存在します。そのような場合には,上記の構文はどのようにすればよいのでしょうか。 教えていただければ幸いです。 初心者で言葉足らずかも知れませんが、よろしくお願いします。

  • VBAで、VBProjectへのアクセスのための設定について教えてください。

    Excelで、下記のようなマクロを作成し動かしたころ、 「実行時エラー'6068'  Visual Basic Projectへのプログラム的なアクセスは信頼されません」 というエラーが出てしまいます。 どのように対処すれば動作するようになるのでしょうか。ご教示ください。よろしくお願いいたします。 【環境】 Windows XP & Office2003 【設定など】 Excel:[ツール]-[マクロ]-[セキュリティ]で、  「Visual Basic プロジェクトへのアクセスを信頼する」にチェック VBエディタ:[ツール]-[参照設定]で、以下の参照を追加  Microsoft Visual Basic for Applications Extensibility 5.3  Microsoft Word 11.0 Object Library 【作ろうとしているマクロ】 (1)マクロを含んだWordファイルを開く (2)Wordファイルのプロパティや、マクロのプログラムの行数などの値を取得 (3)Excelのシートに取得した値を入力 【作ったマクロ】 Sub test() Dim objWord As Object Set objWord = CreateObject("Word.Application") flname = "(フルパスでのファイル名)" With objWord .Visible = False .Documents.Open Filename:=flname, _ ReadOnly:=True, _ OpenAndRepair:=False With objWord.Documents aaa = .Item(1).BuiltinDocumentProperties(1).Value Worksheets("test").Cells(1, 1).Value = aaa 'ここまでは正常に動作します。 bbb = .Item(1).VBProject.VBComponents(1).CodeModule.CountOfLines 'ここで実行時エラーが出ます。 Worksheets("test").Cells(1, 1).Value = bbb .Item(1).Close SaveChanges:=wdDoNotSaveChanges End With End With objWord.Quit Set objWord = Nothing End Sub 以上です。 どうか、よろしくお願いいたします。

  • AccessVBAからWordのマクロを実行するには

    [環境]Access2000,Word2000 AccessVBAでWordのオブジェクトをつくりファイルを開くところまでは たどり着いたのですが、開いたWordファイルにあるマクロを実行させる ことが出来ずに困っています。 WordオブジェクトのApplicationとDocumentsオブジェクトの関係も把握 しきれていないため、おかしなソースになっているかも知れません。 よろしくお願いします。 sub DoMacro() Dim oWrd as Word.Application Dim oDoc as Word.Document Set oWrd = New Word.Application With oWrd Set oDoc = oWrd.Documents.Open("c:\test.doc") .Visible = True .Application.Run ("Macro1") oDoc.SaveAs "c:\newTest.doc" .Quit End With End Sub

専門家に質問してみよう