
Aというブックのマクロを動かし、別ブックのコマンドボタンに埋め込まれているマクロの動作を行いたいのですがうまく行きません。
下記がコードになります。
Option Explicit
Public strName As String
Public strPath As String
Public xlApp As Object
Public xlBook As Object
Public xlSheet As Object
Public Function テスト処理()
'ファイル名
strName = Worksheets("名前").Range("B2")
'ファイルを置いている場所
strPath = Worksheets("名前").Range("B3")
Set xlApp = CreateObject("Excel.Application")
'別Excelを開く
Set xlBook = xlApp.Workbooks.Open(strPath, True)
'シートの選択
Set xlSheet = xlBook.Worksheets("操作画面")
xlApp.Visible = True
xlApp.UserControl = True
xlSheet.Activate
setブック処理
End Function
Public Sub setブック処理()
'別ブックのマクロを動かす
Application.Run (strName & "!CmdClick"), ThisWorkbook
End Sub
上記のマクロを動かすと、Application.Runの部分で下記エラーが表示されます。
実行時エラー1004
'別ブック.xls'が見付かりません。ファイル名及びファイルの保存場所が正しいかどうか確認してください。
setで飛ぶ前に別のブックは開けているので、ファイル名や保存場所は正しいと思うのですがエラーが出てしまいます。
宣言の仕方が間違っているのでしょうか?
ちなみに、別ブックのコマンドボタンのマクロは下記の名称なので、マクロ名の間違いという事も無いと思います。
Private Sub CmdClick()
~処理~
End Sub
No.1ベストアンサー
- 回答日時:
こんにちは。
別プロセスでExcelアプリケショーンを立ち上げる必要があるのかどうか、
こちらでは判断つきませんが、仮に必要なのだとして、、、。
直接的な答えとしては、
Public Sub setブック処理()
'別ブックのマクロを動かす
xlApp.Run (strName & "!CmdClick")
End Sub
ということになります。
別プロセスのアプリケーションで開いたブックのマクロなのですから、
そちらのApplicationオブジェクト(xlApp)に対してRunメソッドを実行することになります。
仮に同一のApplicationで"別ブック"を開いた場合の記述としては、
Application.Run (strName & "!CmdClick")
が正解、ということになります。
Application.Runの引数群に , ThisWorkbook と書かれているのは、
状況から考えて、何かしら転記ミスのようなものだと思っています。
コマンドボタンのマクロを呼び出す場合は、Application.Runの引数は、
プロシージャ名、ひとつ、だけです。
実際にダミーサンプルブックを2通り作成し動作を確認しました。
動作の条件として、
ブック[A]のシート[名前]について、
1◆B2(strName)には、"別ブック"のショートネーム ex.) "別ブック.xlsm"
2◆B2(strPath)には、"別ブック"のフルネーム ex.) "D:\フォルダ\別ブック.xlsm"
が正しく設定されていること。
呼び出そうとしている"別ブック"のマクロ CmdClick は、
3◆"別ブック"の標準モジュールに書かれていること。
以上の3点は確認が必要です。
また、別ブックのコマンドボタン、
これは、フォームコントロールのコマンドボタンという前提でお応えしています。
提示した方法でうまく行かない場合は、上記確認の上、
未提示の条件を整理した形の補足を頂ければ、改めて対応します。
以下、余談です。
Public Function テスト処理()
は、ここで開示されている限りでは、Functionプロシージャとしての要件、
つまり、値を返す関数としての記述、が見当たりません。
値を返さないならSubプロシージャで書いた方が解り易いです。
どちらの場合でも、テスト処理を呼び出す元のプロシージャが、
もしもイベントプロシージャだった場合は、
└呼び出し元のイベントプロシージャ
└テスト処理
└ブック処理
└別ブック!CmdClick
というようなネストは、外部アプリケーションを扱う場合にはややリスキーで、
思わぬ結果に繋がる場合もありますから、呼び出し元の方で、
Application.OnTime Now, "テスト処理"
のようにコールして、イベントプロシージャを抜けてから処理するように
└テスト処理
└ブック処理
└別ブック!CmdClick
した方が安全ですし、以後の書き換えに困る機会を減らせます。
呼び出し元のイベントプロシージャ と テスト処理 とが
独立して非同期で動作するように書いておく、
呼び出し元のイベントプロシージャ
の処理が終わってから
イベントを抜けた後にスケジュールされているアプリケーション由来の処理が終わってから
テスト処理
を実行する
ということです。
以上です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Excel(エクセル) Excelのマクロコードについて教えてください。 1 2022/03/27 10:47
- Excel(エクセル) 【マクロ】【VBA】同じフォルダ内にあるエクセルのデータを転記したい【ブック1からブック2へ】 9 2023/08/10 07:51
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで保存しないで閉じると空の...
-
【Excel VBA】マクロでExcel自...
-
エクセル関数>参照ファイル名...
-
EXCELマクロで、開いてはいるが...
-
マクロの保存先、開いてるすべ...
-
【Excel】マクロの保存先について
-
エクセルで使用期限付きのブッ...
-
エクセルのvbaにて thisworkboo...
-
excelで直前に参照していたブッ...
-
【Excel】特定セルの内容をテキ...
-
名前の変わるブックをアクティ...
-
【Excel】他ブックからOpenされ...
-
複数のExcelファイルの印刷設定...
-
【マクロ】元データと同じお客...
-
複数のExcelブックから特定シー...
-
VBA ユーザーフォームとVISIBL...
-
[フィルターオプションの設定]...
-
ファイル名変更後も、マクロを...
-
EXcelのマクロで相対パスでファ...
-
エクセル;相対パスを絶対パスへ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで保存しないで閉じると空の...
-
エクセル関数>参照ファイル名...
-
【Excel VBA】マクロでExcel自...
-
マクロの保存先、開いてるすべ...
-
エクセルのvbaにて thisworkboo...
-
EXcelのマクロで相対パスでファ...
-
【Excel】マクロの保存先について
-
エクセル;相対パスを絶対パスへ...
-
EXCELブックが勝手に開いて困っ...
-
エクセルで未保存に対するメッ...
-
excelで直前に参照していたブッ...
-
EXCELのボタンによるマクロの登...
-
ファイル名変更後も、マクロを...
-
エクセルで使用期限付きのブッ...
-
【Excel】特定セルの内容をテキ...
-
複数のExcelファイルの印刷設定...
-
エクセルを開いて文字を打つ際...
-
EXCELマクロで、開いてはいるが...
-
エクセルで複数ファイルのセル...
-
[フィルターオプションの設定]...
おすすめ情報