- ベストアンサー
【VBA】他のExcelを起動し、呼び出し元のExcelを閉じる
- VBA初心者の方がTEST1.xlsからTEST2.xlsを起動し、TEST1.xlsを閉じる方法についての質問です。
- TEST1.xlsを実行すると、TEST2.xlsが起動されたかのようにしたい場合、VBAのマクロを使って実現することができます。
- しかし、試行錯誤の結果、TEST2.xlsのマクロが無効になったり、TEST1.xlsが閉じなかったりする問題が発生しています。どなたか解決策を教えていただけると助かります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
横から失礼します。 TEST1.xls 側で TEST2 の Auto_Open を実行し、UserForm は モードレスで開く と言うのはダメでしょうか? Excel2000で何度か試しましたところでは、失敗は無かったです。 (Excel97では使えないけど) 'TEST1側 Sub Auto_open() Dim wb As Workbook Set wb = Workbooks.Open("C:\Test2.xls") Application.Run wb.Name & "!Auto_Open" ThisWorkbook.Close End Sub 'TEST2側 Sub auto_open() UserForm1.Show vbModeless End Sub
その他の回答 (1)
丸投げは規定違反になるので、 あなたの試行錯誤の成果を見せてください。 悪いところを指摘することはできます。
お礼
解決する事が出来ました。 質問の仕方等、勉強する事はまだまだ多そうです。 ありがとうございました。
補足
大変申し訳ありませんでした。 プログラムを記載します。 現在、下記のような手順のプログラムを作りたいと思っております。 ////////////////////////////////////////// TEST1.xlsを起動したら、TEST2.xlsを開き TEST2.xlsのマクロが実行される。 TEST2.xls起動後は、TEST1.xlsは閉じる ////////////////////////////////////////// TEST1.xls 起動時の処理 ==================== Public Sub auto_open() 'TEST2.xls起動 Workbooks.Open "C:\TEST2.xls" 'TEST1.xlsを閉じる ThisWorkbook.Close End Sub TEST2.xls 起動時の処理 ==================== Public Sub auto_open() 'ユーザフォームを表示 UserForm.Show End Sub ※ユーザフォームは、ボタンを一つだけ設置 そのボタンが押下されたら、エクセルアプリケーションを終了 TEST2.xls ユーザフォーム表示後、ボタン押下時処理 ==================== Private Sub CommandButton1_Click() Application.Quit End Sub ----------------------------- ご指摘をお願い致します。
お礼
ありがとうございます。解決する事が出来ました! 早々のご回答ありがとうございましたm(_ _)m