• ベストアンサー

VBAを使用してWordからExcelのマクロを実行したい

a.docからb.xlsのVBA(マクロ)の Sub sample() MsgBox "hello" End Sub を実行できるようにするにはどうすればよいのでしょうか? 使用OS:Windows XP 使用ソフト:Microsoft Excel 2003 ご存知の方がおられましたらご回答をよろしくお願いします。

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

  • ベストアンサー
  • lark_0925
  • ベストアンサー率63% (37/58)
回答No.3

Sub sample() MsgBox "hello" End Sub この↑コードは、本当にb.xlsの標準モジュールに あるのですか? シートのモジュールやThisworkbookモジュールに あるのではないですよね? 簡単なコードなので 何度も試しているのですが、 正常の hello と表示されます。 再度確認してみてください

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

>ご存知の方がおられましたらご WEBに例が沢山載っています。 http://homepage1.nifty.com/MADIA/vb/Tecnick/ExcelRun.htm それらを2、3をつぎはぎして作成できた。 エクセルは、私の場合たまたま C:\Documents and Settings\xxxx\My Documents\入力規則19.xls の標準モジュールに(xxxxはユーザー名) Sub sample() MsgBox "hello Module1のSample通過" End Sub を作りました。 ーーー ワードのツールーマクローVBE-標準モジュールに下記をセット。 Sub test21() Dim xlObj As Object Err.Number = 0 On Error GoTo notLoaded Set xlObj = GetObject(, "Excel.Application.9") notLoaded: If Err.Number = 429 Then Set xlObj = CreateObject("Excel.Application") theError = Err.Number End If xlObj.Visible = True xlObj.Workbooks.Open FileName:="C:\Documents and Settings\OTO\My Documents\入力規則19.xls" With xlObj .Run ("Module1.sample") ' Excelの終了 .Quit ' オブジェクトを解放 Set xlObj = Nothing End With End Sub ワードで実行すると 入力規則19.xls が開き、 hello Module1のSample通過 のメッセージが出ました。 ーー Modle2に同名のsample()を作って、Msgboxのメッセージは変えて .Run ("Module2.sample") に変えて実行するとそちらを通ることを確認しました。

nana_watuki
質問者

お礼

パソコンを再起動後、再度試してみたら問題なく実行することができました。 どうやらこれ以前に実行したマクロの影響でうまく実行することができなかったようです。 (これ以前に実行したマクロの.Visible = Falseの影響により裏でExcelが開いていたから?) まだ習い始めて間もないため気づくのに時間がかかりました。以後、気を付けたいと思います。 ご回答いただきどうもありがとうございました。

nana_watuki
質問者

補足

実行時エラー '1004': マクロ 'Module1.sample' が見つかりません。 と表示されてExcelのマクロを実行することができませんでした。 コピー&ペーストしているし、パスもあっているので 問題ないはずなのですがなぜかエラーが出て実行できません

  • lark_0925
  • ベストアンサー率63% (37/58)
回答No.1

a.docとb.xlsは、同じフォルダ上にあるとすると・・、 a.docの標準モジュールに '======================================================== Sub main()    With CreateObject("excel.application")      With .workbooks.Open(ThisDocument.Path & "\b.xls")        .Application.Run .Name & "!sample"        .Close False        End With      .Quit      End With End Sub

nana_watuki
質問者

補足

早速やってみたのですが、 実行時エラー '1004': マクロ 'b.xls!sample' が見つかりません。 と表示されてExcelのマクロを実行することができませんでした。 a.docとb.xlsは、同じフォルダ上にあり、マクロのsample()も ちゃんと存在しているのに何が問題だったのでしょうか?

関連するQ&A