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

解決済みの質問

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

a.docからb.xlsのVBA(マクロ)の
Sub sample()
MsgBox "hello"
End Sub
を実行できるようにするにはどうすればよいのでしょうか?

使用OS:Windows XP
使用ソフト:Microsoft Excel 2003

ご存知の方がおられましたらご回答をよろしくお願いします。

投稿日時 - 2008-02-04 19:12:42

QNo.3744493

すぐに回答ほしいです

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

Sub sample()
MsgBox "hello"
End Sub

この↑コードは、本当にb.xlsの標準モジュールに
あるのですか?

シートのモジュールやThisworkbookモジュールに
あるのではないですよね?

簡単なコードなので
何度も試しているのですが、
正常の
hello と表示されます。

再度確認してみてください

投稿日時 - 2008-02-04 22:30:02

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

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

回答(3)

ANo.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")
に変えて実行するとそちらを通ることを確認しました。

投稿日時 - 2008-02-04 21:48:47

補足

実行時エラー '1004':
マクロ 'Module1.sample' が見つかりません。
と表示されてExcelのマクロを実行することができませんでした。

コピー&ペーストしているし、パスもあっているので
問題ないはずなのですがなぜかエラーが出て実行できません

投稿日時 - 2008-02-04 22:27:34

お礼

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

ご回答いただきどうもありがとうございました。

投稿日時 - 2008-02-04 23:05:21

ANo.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

投稿日時 - 2008-02-04 19:51:55

補足

早速やってみたのですが、
実行時エラー '1004':
マクロ 'b.xls!sample' が見つかりません。
と表示されてExcelのマクロを実行することができませんでした。

a.docとb.xlsは、同じフォルダ上にあり、マクロのsample()も
ちゃんと存在しているのに何が問題だったのでしょうか?

投稿日時 - 2008-02-04 21:06:40

あなたにオススメの質問