• ベストアンサー

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/17068)
回答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

  • Wordの選択した文字列をVBAを使用してExcelにペーストしたい

    a.docにある「サンプル」という文字列を選択後、 マクロの実行でb.xlsのA1にペーストするには どうすればよいのでしょうか? 使用OS:Windows XP 使用ソフト:Microsoft Excel 2003 ご存知の方がおられましたらご回答をよろしくお願いします。

  • VBA_マクロ内でマクロ実行

    独学でVBAをやってる初心者です。 よろしくお願いします。 EXCEL2003を使ってます。 例) <A.xlsファイル> Sub File_A () Workbooks.Open Filename:="B" Call File_B Range("A1").Select Selection.Paste End Sub <B.xlsファイル> Sub File_B () Range("A2:T5").Select Selection.Copy End Sub A.xlsファイルを開きマクロFile_Aを実行させると B.xlsファイルのマクロFile_Bを実行することができません。 どうしたらうまく実行できますか? 教えてください。

  • EXCEL VBAでのWord操作

    ExcelのVBAにて、Wordファイルに挿入されているExcel表を更新したいのですが、 どのように記述すればよりかわかりません。 具体的には以下のとおりとなります。 「在庫.xls」 のセル A1 「照合表.doc」に挿入されているExcel表には「在庫.xls」のセルA1を参照するように記述が 入っています。 「在庫.xls」にコマンドボタン「更新」を作成し、実行すると「照合表.doc」の値が更新されるように マクロを組みたいのですが、どなたか知恵を貸してください。

  • エクセルのマクロでファイルを開く

    エクセルの「ファイルを開く」ダイアログボックスを使用してファイルを開き、その開いたファイルに対してとあるマクロを実行させたいと思っています。 エクセルの「ファイルを開く」ダイアログボックスでパス取得までは理解出来たのですが、その先の処理が分かりません。 「ファイルを開く」と言うのは、「現在アクティブになっているシートにデータを貼り付けて」の処理でも構いません。 Dim Ret As Variant Ret = Application.GetOpenFilename("Excel ブック (*.xls), *.xls, テキストファイル(*.txt),*.txt") If Ret = False Then MsgBox "キャンセルが選択されました。" Exit Sub Else       'ここにRetで取得しているパスのファイルを開いて、sub_WAITのマクロを実行させたいです。 sub_WAIT.Show End If End Sub

  • Excelマクロの命令文を教えてください。

    EXCEL2002です。現在Access2002に簡単なマクロを作りAccessよりExcelで作った000.xlsを開いてます。その000.xlsに下記のようなマクロを入れて実行し目的を果たしています。 Sub LROpen() ChDir "D:\EXCEL\LRTotal" myfile = Application.GetOpenFilename Workbooks.Open Filename:=myfile End Sub 本当はAccessからいっぺんに上記マクロのEND SUBまで行きたい所ですが私の力では無理なのでこのように段階的になってます。質問はこの上記マクロが張ってある000.xlsが開いたとき自動的にマクロが実行される様にする方法があるかお尋ねする次第です。宜しくお願いします。

  • VBAにおいて、""内で変数を使用したい

    VBAにおいて、""内で変数を使用したい 0864_001.xls 0864_002.xls … 0864_009.xls というファイルがあるとき、0864_001.xlsを開く→処理→閉じる→0864_002.xlsを開く→… というように処理をしたいと思い、以下のようなマクロを作成しました。 Sub Test() Dim i As Integer For i = 1 To 9 Workbooks.Open ThisWorkbook.Path & "\0864_00i.xls" 処理 閉じる Next i End Sub 実行しようとしてもファイルを開くことが出来ずに困っています。 ""内で変数を使うことは出来ないのでしょうか? また、どのようにすれば実行できるようになるのか教えてください。

  • 毎日指定時刻に自動でエクセルを開き、マクロを起動する方法

    <前提条件> ・パソコンを常に起動している(シャットダウンはしない) ・TEST.xlsにマクロ作成済 <お聞きしたいこと> ・毎日指定時刻(15:30)にTEST.xlsを開き、登録されている  マクロを自動で実行したい <私の考え> ・TEST.xlsに下記マクロを登録しようと思っております。  ただ、下記だけですと、「指定時刻にエクセルを開く」と、  「毎日指定時刻に自動でマクロを実行する」ことができません。  あまりマクロについて知識がないため、ご教示のほどよろしくお願いいたします。 Sub 指定時刻にマクロを実行する() Application.OnTime TimeValue("15:30:00"), _ "MSGBOX", _ TimeValue("00:00:30") End Sub Sub MSGBOX() msgbox"TEST" End Sub 

  • VBAでのファイルの開き方について

    いつもお世話になっております。(エクセル2010を使用) エクセルVBAを学習中の者です。 ダイアログボックスを表示してファイルを開く・・・というコードを記述しているのですが、分からない点があるためご指導をお願いします。 Sub Sample1() Dim openFileName As String openFileName = Application.GetOpenFilename filefilter:="Microsoft Excelブック,*.xls?" Workbooks.Open Filename:=openFileName End Sub を実行するとコンパイルエラーの構文エラーが表示されます。 Sub Sample2() Dim openFileName As String openFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") Workbooks.Open Filename:=openFileName End Sub を実行すると正常に動作します。 私の現在の知識ではSample1も正常に動作するはずなんですが・・・ (※コードはVBEをコピペしています) 両者の違いはなんでしょうか?(※スペルの間違いは無いとは思いますが・・・) どうぞよろしくお願いいたします。

  • Excel マクロ & VBA で教えてください

    Excel マクロ&VBA の教則本で、独習しています。その中の「すべてのブックに対して 処理を繰り返す」との項目で、以下の様な「コード」があります。           Sub 開いているブックに処理を実行( ) Dim 全ブック As Workbook For Each 全ブック In Workbooks 全ブック .Save Next End Sub これを実行すると、以下の「メッセージ」が表示されました。 Microsoft Excel プライバシーに関する注意:このドキュメントは、マクロ、Activexコントロール,XML拡パックの情報、又はWebコンポーネントが含まれています。これらにはドキュメント検査機能で削除することが出来ない個人情報が含まれる場合があります。 そして 「OK」 ボタンをクリックすると VBA に戻り、「キャンセル」ボタンをクリックすると「実行時エラー’1004’:ファイルを保存出来ませんでした」とのメッセージが表示され、「セキュリティー」に問題があるのかと、「セキュリティー」の設定を、教本を見ながら、色々試してみましたが、解決出来ません。どの様にすれば実行出来るのか?御指導御教授の程、よろしくお願い致します。 動作環境は以下の通りです。 ◎OS -- Windows7 ◎Excel -- Microsoft Excel 2010

  • XCELのVBAマクロで次のことが実行できますか。

    XCELのVBAマクロで次のことが実行できますか。 (前提)WINDOWSで (1)MYDOCのフォルダAにExcelファイルA1.xlsからA9.xlsまで9個のファイルと、もう一つマクロBBの入ったExcelファイルB.xlsがあります。 (2)各Ai.xlsには、Aisheet(i=1カラ9)と名前のsheetが1つのみあります。 (処理したいこと) A1.xlsを開き、A1sheetを、B.xlsへcopyし、そのシートに対してマクロBBという処理を実行します。 続いて同様にA2.xlsを開き、A1sheetを、B.xlsへcopyし、そのシートに対してマクロBBという処理を実行します。 以下A9まで実行したい。 (質問)Bのマクロに新たにCCというマクロを作り、CCを実行することで、自動的に(処理したいこと)を実行してしまうようなものを作れますか。 また作るとしたらおおよそどんな風に作ればいいでしょうか。 ご回答よろしくお願いします。

専門家に質問してみよう