- ベストアンサー
エクセル2007でのApplication.Run実行時エラーと解決方法
- エクセル2007でApplication.Runを使って他のブックの関数を使用しようとしたところ、実行時エラーが発生しました。
- エクセル2007では、ブックを開くとマクロが自動的に無効になるため、マクロを有効にする方法を試しましたが解決しませんでした。
- エクセル2007でのApplication.Runの実行方法について、他のブックを開いて処理を行う方法が分かりません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>エクセル2007でApplication.Runをどうすれば実行できるでしょうか? 別に、Excel2007 でも、前のバージョンでも変わりません。 質問全体としては、分からない部分がいくつかあります。 なぜ、肝心な部分のコードを書かないで質問されているのか良く分かりません。 >next_book="test.xls" >Workbooks.Open (ThisWorkbook.Path & "\" & next_book) Excel 2007 で、旧xls ファイルを呼び出すのでしょうか? 仮に、そうであっても、開けば、 Application.Run で呼び出せるはずです。 >目的は、1というBOOKの処理が終わったら、次のブックを自動で立ち上げて、次のブックの処理スタートボタンを自動で押したいというものです。 しかし、ボタンの種類にもよりますが、Active X コントロールのボタンを、呼び出し処理は出来ないはずです。Private ステートメントが付いているはずです。それを外せばよいのですが、そんなことは、あまりしませんね。だいたい、こういう場合は、Application.Run で実行させることなどありません。 あまり凝ったことをせずに、別のブックにコードを置いて、処理するのが良いのではないかと思います。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
2007で無いですが、何か参考になれば。 XXX.xlsのModule1に Sub test02() UserForm1.Show End Sub があります。 このブックをまず開いておく。 ーーー 他のブックを開いて(新規ブックBook1。保存前)、標準モジュールに Sub test01() Application.Run "xxx.xls!Module1.Test02" End Sub を入れて 、実行すると、UserForm1が現れ、ボタンをクリックすると、クリックイベントの Private Sub CommandButton1_Click() MsgBox "SSS" Workbooks("Book1").ActiveSheet.Range("A1") = "xxxx" End Sub を入れていますが、所定の処理が実行されましたが。 (Module1の限定を入れてますか。Module2などに同名のプロシ名がある場合)
お礼
アドバイスありがとうございました。 マクロが無効になってしまう原因はわからないままですが、別の方法で対応しました。 ちょっと不思議な現象ですが、ファイルを作りなおすと現象が治りそうな気がします。 いろいろ調べてみます。
お礼
説明用にサンプルプログラムを作ろうとおもったら、ソチラでは動きました。 メインのプログラムがなぜ実行時エラーが出るのかはわからないままですが、確かにおっしゃる通りエクセル2007が問題ではないようです。 とりあえず、Application.Run を使わず、次のBOOKのオープンイベントで処理を開始するようにして 対応しました。 なお、xls形式を使っている理由はファイルを配布するからです。エクセル2007形式では読み取り出来ない方も居られますので。 ご回答ありがとうございました。