
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も見ています
-
【お題】大変な警告
【大喜利】「今このパソコンは大変危険な状態です」という警告メッセージを無視してパソコンを開いたら、こんなことが起こった
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
あなたの「プチ贅沢」はなんですか?
お仕事や勉強などを頑張った自分へのご褒美としてやっている「プチ贅沢」があったら教えてください。
-
あなたなりのストレス発散方法を教えてください!
自分なりのストレス発散方法はありますか?
-
【お題】斜め上を行くスキー場にありがちなこと
運営も客も一流を通り越して斜め上を行くスキー場にありがちなことを教えて下さい。
-
Excel vbaで別ブックのコマンドボタンをクリック
Visual Basic(VBA)
-
Application.Runエラー(1004)
Excel(エクセル)
-
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
-
4
表にフィルターをかけ、絞ったデータ(可視化セルのみ)を一次元配列として変数に入れるという動作を書きた
Visual Basic(VBA)
-
5
vba クリップボードクリアについて教えてください
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで保存しないで閉じると空の...
-
エクセル関数>参照ファイル名...
-
【Excel VBA】マクロでExcel自...
-
マクロの保存先、開いてるすべ...
-
EXcelのマクロで相対パスでファ...
-
【Excel】マクロの保存先について
-
エクセル;相対パスを絶対パスへ...
-
EXCELマクロで、開いてはいるが...
-
複数のExcelファイルの印刷設定...
-
エクセルを開いて文字を打つ際...
-
【Excel】特定セルの内容をテキ...
-
同一フォルダ内のファイルを開く
-
ファイル名変更後も、マクロを...
-
EXCELのボタンによるマクロの登...
-
エクセルVBA 個人用マクロブッ...
-
名前の変わるブックをアクティ...
-
エクセルVBAで作成した別ブック...
-
excelで直前に参照していたブッ...
-
エクセルで複数ファイルのセル...
-
エクセルVBAでシートを別のフォ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで保存しないで閉じると空の...
-
エクセル関数>参照ファイル名...
-
【Excel VBA】マクロでExcel自...
-
マクロの保存先、開いてるすべ...
-
エクセルのvbaにて thisworkboo...
-
EXcelのマクロで相対パスでファ...
-
エクセル;相対パスを絶対パスへ...
-
【Excel】マクロの保存先について
-
excelで直前に参照していたブッ...
-
EXCELマクロで、開いてはいるが...
-
複数のExcelファイルの印刷設定...
-
[フィルターオプションの設定]...
-
EXCELのボタンによるマクロの登...
-
エクセルを開いて文字を打つ際...
-
エクセルVBAで作成した別ブック...
-
エクセルVBA 個人用マクロブッ...
-
【Excel】特定セルの内容をテキ...
-
エクセルで使用期限付きのブッ...
-
ファイル名変更後も、マクロを...
-
エクセルで複数ファイルのセル...
おすすめ情報