【VBA】他のExcelを起動し、呼び出し元のExcelを閉じる

このQ&Aのポイント
  • VBA初心者の方がTEST1.xlsからTEST2.xlsを起動し、TEST1.xlsを閉じる方法についての質問です。
  • TEST1.xlsを実行すると、TEST2.xlsが起動されたかのようにしたい場合、VBAのマクロを使って実現することができます。
  • しかし、試行錯誤の結果、TEST2.xlsのマクロが無効になったり、TEST1.xlsが閉じなかったりする問題が発生しています。どなたか解決策を教えていただけると助かります。
回答を見る
  • ベストアンサー

【VBA】他のExcelを起動し、呼び出し元のExcelを閉じる

こんにちは。VBA初心者で、現在勉強している最中のものです。 宜しくお願い致します。 現在、TEST1.xlsというブックからTEST2.xls(マクロ有)を 起動させたいと思っております。 ただ、TEST2.xlsが起動したのち、TEST1.xlsは閉じさせたいのです。 TEST1.xlsは、TEST2.xlsのキック用とし、 TEST1.xlsを実行させると、あたかも、TEST2.xlsを起動させたように したいと思っています。 色々試してみたのですが、TEST2.xlsのマクロが無効になったり、 TEST1.xlsが閉じなかったりと試行錯誤しております。 どなたか、ご指南いただけたらと思っております。 どうぞ、宜しくお願い致しますm(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.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

funamin
質問者

お礼

ありがとうございます。解決する事が出来ました! 早々のご回答ありがとうございましたm(_ _)m

その他の回答 (1)

noname#19197
noname#19197
回答No.1

丸投げは規定違反になるので、 あなたの試行錯誤の成果を見せてください。 悪いところを指摘することはできます。

funamin
質問者

お礼

解決する事が出来ました。 質問の仕方等、勉強する事はまだまだ多そうです。 ありがとうございました。

funamin
質問者

補足

大変申し訳ありませんでした。 プログラムを記載します。 現在、下記のような手順のプログラムを作りたいと思っております。 ////////////////////////////////////////// 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 ----------------------------- ご指摘をお願い致します。

関連するQ&A

  • エクセルのVBAについて

    エクセルのVBAについて教えて下さい。 エクセルのVBAでプログラムを組んでいるのですが、一つわからないことがあるのです。 マクロが実行(オープン)されるファイル名(ファイルパス)をVBAで取得するためにはどうすればいいでしょうか? たとえば、マクロが実行されるファイルがC:\テスト.xlsならば "C:\テスト.xls"を取得したいと考えています。 どなたかご教授お願い致します。 宜しくお願い致します。

  • Excel VBA でファイルが開かれているか確認する

    ExcelのVBAで、book1.xlsというファイルが現在開かれているか確認するにはどんなプロパティを使えばいいでしょうか? 実際にやりたい事は、book1.xlsに対して処理するマクロがあるのですが、そのbook1.xlsが開かれていなければ処理が出来ないのでマクロが入っているファイルを閉じる。というものです。

  • エクセル97,マクロのツールバー登録について

    状況 例えば,test1.xlsというエクセルブックを開いて,vba機能によりマクロを作成します。これを,保存先をtest1.xlsにしてツールバーのアイコンに登録します。 作業が終わって,test1.xlsをok.xlsという名称に変えて保存・終了し,新しいbook1.xlsを立ち上げるとします。 すると,test1.xlsに登録したはずのツールバーアイコンのマクロ登録先が,ok.xlsに変わっています。 質問 例えばok.xlsにブック名を変更して保存・終了しても,ツールバーのアイコンのマクロの保存先をtest1.xlsにするには,どこをどの様に設定したら良いのでしょうか? 素人なものですから,具体的に方法を記述していただけると,非常に助かります。 よろしくお願い致します。

  • VBAでエクセルからエクセルのファイルを開くには?

    D:\に db1.mdb Book1.xls があります。 db1.mdbのフォームのコマンドボタンをクリックして Book1.xlsを開きたいのですが VBAコードをご教授いただけますか? (マクロではなくVBAコードが知りたいです) エクセルからエクセルのファイルを開くなら Workbooks.Open ファイルのフルパス で出来ました。 ご回答よろしくお願いします。

  • excel vba

    テーブル情報に基づきシートをコピーするVBAマクロを記述したい。 ExcelのBook111のSheet1に次のような データが入っています。 (1、2)セルにn=3という数字が入っているものとします。 その数値に合わせて、この場合は3なので Sub Sample01() Workbooks("Book3.xls").Worksheets("booksheet3").Copy After:=Workbooks("Book111.xls").Sheet(1) End Sub のようなつまり、booksheet3なるシートをBook111(固定なBOOK)にコピーしようとしています。 このようなことをVBAで書くにはどうすればいいのでしょうか。 ただしBook名とシート名はあくまでデータの値にもとづいたデータをもってくることになります。 要するに間接参照したデータに基づき処理するのをどのように記述するかという質問です。 A列 B列 1 回数 n=3 2     3     4 Book1.xls book1sheet ←n=1 5 Book2.xls book2sheet ←n=2 6 Book3.xls book3sheet ←n=3 7 Book4.xls book4sheet 8 Book5.xls book5sheet 9 Book6.xls book6sheet ←n=6 10 Abc,xls Defsheet ←n=7

  • Excel VBAで他のワークブックからのコピぺの仕方について

    Excel VBAで開いている全てのワークブックから決められたセルの中身とそのシート名をそれぞれ決められた一つのワークブックにコピぺする マクロを作りたいのですが、どうやって作って良いのかが分かりません。 例えば、 Sub Mac() For i = 1 To 100 Workbooks("Book1.xls").Worksheets("sheet1").Range(Cells(2108, 2), Cells(3108, 2)).Cut Destination:=Workbooks("Book1.xls").Worksheets("sheet1").Cells(13, 2) End Sub みたいにすれば良いと思うのですが、開いている全てのファイルからのコピぺってどうやって記述するのでしょうか? 何卒よろしくお願い致します。

  • エクセルVBAで困っています。

    Excell2003でマクロを作成したのですが、思うような結果が出なくて困っています。 どなたかお力をお貸しください。 お願いします。 【作成したマクロ】 Sub テスト()   myPath = ThisWorkbook.Path   buf = Dir(myPath & "¥データ¥" & "*.xls")   Do While buf <> ""     Target = "'" & myPath & "[" & buf & "]Sheet1'!R1C1"     i = i + 1     Cells(i, 1) = buf     Cells(i, 2) = ExecuteExcel4Macro(Target)     buf = Dir()   Loop End Sub 【設定状況】 ・デスクトップ上に "サンプル.xls" があり、ThisWorkBookに上記マクロを書きました。 ・デスクトップ上に "データ" というフォルダがあり、その中に、"Book1.xls" と "Book2.xls" があります。 ・"Book1.xls" のSheet1のRange("A1")には "あいうえお" が入力されています。 ・"Book2.xls" のSheet1のRange("A1")には "かきくけこ" が入力されています。 【マクロ実行結果】 ・Range("A1") ・・・ Book1.xls ・Range("B1") ・・・ #REF! ・Range("A2") ・・・ Book2.xls ・Range("B2") ・・・ #REF! となってしまいます。 【求めたい結果】 ・Range("A1") ・・・ Book1.xls ・Range("B1") ・・・ あいうえお ・Range("A2") ・・・ Book2.xls ・Range("B2") ・・・ かきくけこ よろしくお願いします。

  • エクセル2007で、Application.Runを使って、他のブック

    エクセル2007で、Application.Runを使って、他のブックの関数を使用しようとしたところ、実行時エラー「このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。」が出ます。以下のサイトの情報を実行してみても解決できませんでした。 http://soumukouboo.blog91.fc2.com/blog-entry-107.html http://www.katch.ne.jp/~kiyopon/soft/2007.html エクセル2007では、ブックを開くとマクロは強制的に無効にされることは分かったのですが、信頼できる場所を登録しても、上記エラーが出て実行できません。 エクセル2007でApplication.Runをどうすれば実行できるでしょうか? ちなみに「他のブック」は同じフォルダに置いてあり、 next_book="test.xls" Workbooks.Open (ThisWorkbook.Path & "\" & next_book) という感じで、最初に次のブックを立ち上げています。 目的は、1というBOOKの処理が終わったら、次のブックを自動で立ち上げて、次のブックの処理スタート ボタンを自動で押したいというものです。 よろしくお願い致します。

  • Excel VBA別ブックのシートをコピーするには

    Excel2010のVBAで別ブックのシートをコピーしてくる方法 Excelファイル(C:\test\BOOK2.xls)のシート名が TESTというシートを自分のExcelファイル(C:\doc\BOOK1.xls)に コピーするにはどのように記述すればよいのでしょうか。 ・コピー先:自分のExcelファイル(C:\doc\BOOK1.xls)  VBAのコードがあるファイルです ・コピー元:C:\test\BOOK2.xlsのTESTシート  なお、TESTシートを持つ同じ名前(BOOK2.xls)のファイルが  別フォルダにもあります   Workbooks( )の引数にファイル名(BOOK2.xls)は指定できるのですが、 フルパス名(C:\test\BOOK2.xls)で指定できないので困っています。

  • Excel VBAで他のブックを選択する方法を教えてください。

    こんにちは。VBA初心者です。 ブックを2つ開いた状態で、 マクロを保存してあるブック〔Book1〕から、 毎回ブック名が異なる[Book2]の選択されている2枚のシートを新しいブックに(仮Book3)コピーしたいのですが、どのように記述したらよいのでしょうか。(選択されるシートも毎回異なります。) 特に教えていただきたい部分は、 1.マクロが記録されているBOOK1以外のBookを操作する方法。 2.私以外の方が利用する為、Book1に保存したマクロから実行させる予定なのですが、Book1を毎回開いて実行させる方法がベストのやり方なのでしょうか。 マクロの記録では下記の感じになります。 Sub Macro4() Windows.Arrange ArrangeStyle:=xlVertical Windows("Book2.xls").Activate Sheets(Array("Sheet3", "Sheet4")).Select Sheets("Sheet4").Activate Sheets(Array("Sheet3", "Sheet4")).Copy End Sub 宜しくお願い致します。

専門家に質問してみよう