VBAを使用してExcel2000の複数のブックを開く方法

このQ&Aのポイント
  • VBAを使用してExcel2000で複数のブックを開く方法を知りたいです。
  • INDEX用のブックを作成して、A、B、Cのファイル名を指定して開けるようにしたいですが、うまくいきません。
  • INDEX用のブックを自動で閉じたいのですが、OpenEventのマクロが進みません。どうすればいいですか?
回答を見る
  • ベストアンサー

VBAを使用して、ブックからブックを開く

Excel2000を使用しております。 VBAを使用してA、B、Cの三つのBookを作成しました。 上記3ッのファイルとは別にINDEX用のBookを作成し、 INDEXから、A、B、C、のファイル名を指定し、ファイルを 開ける様にしました。    A、B、Cのいずれかのファイルを開いた後、INDEX用の BOOKを自動で閉じたいのですがうまく行きません。  どなたかご教授願います。 A、B、CにOpenEventを設定し、インデックス用BOOKを閉じようと すると、閉じる事は可能なのですが、それ以降のOpenEventのマクロが 進みません。 逆にINDEX用のBOOKにCloseを入れても閉じてくれません。 INDEXのCloseはA、B、CのファイルをOpenの後にCloseを 入れてます。  どなたかご教授願います。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

Shellで起動すれば新たなインスタンスでExcelファイルが立ち上がるので お互いに『我、関せず』状態になりますのでよろしいかと。 A.B.Cxlsは自分自身のことだけを考えれば良い。 Shell("excel.exe c:\A.xls") Application.quit

B_BOSS
質問者

お礼

御回答、ありがとうございました。 SHELLと言う関数を初めてしりました。  VBAも希望の動きをしてくれました。 ありがとうございました。

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

>A、B、CにOpenEventを設定し デッドロックだと思います。 INDEX側はA、B、Cを開くまで「実行中」です。 「開くまで」とはOpenイベントが終了するまでです。 A、B、CのOpenイベントでINDEXを閉じようと すると、INDEXの実行中の処理が終了するまで 待ち合わせます。つまり、Openイベントが終わりません。 INDEX側もA、B、CのOpenメソッドが完了する まで待ち合わせます。お互いに相手の処理終了を待ち 合ってしまいます。 >逆にINDEX用のBOOKにCloseを 考えられるのは次の事象です。 (1)ターゲットを指定していない。 Workbooks(1).Closeなどではありませんか? ThisWorkbook.Close としていますか? (2)変更後に保存していないのでダイアログが出ている。 A、B、Cを別プロセスで開くと画面が上に来るので、 「保存しますか?」のダイアログが見えないことが あります。 (3)A、B、Cに「INDEXを閉じる」がある。 最初と同じでデッドロックしています。 (4)Closeを通っていない。 何らかの理由でCloseメソッドを実行していないかも 知れません。トレースしてみてください。

関連するQ&A

  • VBAでフォルダ内の全ブックにマクロをかけ集計する

    VBA初心者ですが、本を読んで勉強しても分からないので質問させていただきます。 質問したいことは以下の通りです。使用するのはEXCEL2007です。 あるフォルダ内に999から1600と名前の付いたEXCELのファイルがあります。 その全てのファイルに、あらかじめ作成済みのマクロをかけそのマクロをかけたEXCELファイルのE62からH62までをコピーし、別のファイル(作成済み、名前を仮にAとします)にペーストしたいのです。 ペーストは縦に順番に(例えば、999のファイルから切り取ったE62からH62までのデータをファイルAのB2からE2にコピー、1000のファイルから切り取ったE62からH62までのデータをB3からE3へ…)といった感じです。 一度にフォルダ内の全ファイルを開くわけにはいかないので、999に上記の処理を行ったら保存せずに閉じ、今度は1000にといった感じで次々と処理を行っていきたいと思っております。細かいマクロは自分で作成できたのですが、コピーしたものを別ファイルAにペーストする部分と、999から1600まで連続して処理を行う部分ができません。 分かりにくい文章で申し訳ございませんがぜひご教授ください、よろしくお願いいたします。

  • Excel-VBAでアプリケーションエラー

    現在、Excel-VBAで作成されたマクロの保守を行っております。 このマクロで現在、アプリケーションエラー(問題が発生したため、Microsoft Excelを終了します。・・・)が発生しています。処理の内容を調べると、以下の通りです。 (1)ブックAのマクロで、ブックBを開く (2)ブックAで、自ブックをクローズする。 (3)アプリケーションエラーが発生。 (4)(3)の時点では、ブックBのみ開いており、アプリケーションエラーのダイアログで、Excelを再起動をチェックし、「送信しない」を選択するとブックBが一旦閉じられ、その後ブックBが開かれる。 →したがって、異常終了しているのは、ブックBと想定される。 この事象を回避する方法をどなたかご存じありませんでしょうか?

  • VBAで他のブックのシートにボタン一つで書込みたい

    現在申し込み票のExcelがあるのですが、マクロをボタンに登録してボタン一つ押すと申し込み票の名前と生年月日、住所が他のExcelのブック(例えば申込者名簿.xls)のシートに、名前→A1、生年月日→B1、住所→C1に入力されて保存されるようにしたいです。 更に次にもう一度ボタンを押した時には、名前→A2、生年月日→B2、住所→C2・・と言うようにどんどん書き足したいです。 書き足した後は元のExcelブックも申込者名簿.xlsも閉じるようにしたいです。 どのようにVBAを書けばよいのでしょうか? まだVBA初心者のためいまひとつわかりません。 よろしくお願いいたします。

  • EXCEL VBA のブック操作

    完全に自己流でEXCEL2000のVBAを作成しています。 とても単純な操作なのですが、思い通り動きません。 どうかご教授ください。 よろしくお願いします。 Main ファイルとSubファイルがあります。【パス名とファイル名は指定済み】 ブック内のシートの構成は全く同じになっています。 (MainファイルのVBAを実行後Subファイルが作成されます ファイル名は作成日を入れて保存していっています。) それで以前作成したデータを利用するために、 MainファイルのVBAを実行中にSubファイルを開き参照したいシートを Mainファイルにコピーし、Subファイルを閉じたいのですが フォーカスがうまくいかず、Mainファイルが閉じてしまいます。 何がおかしいのでしょうか? Workbooks.Open Filename:=SubFile Sheets("Sheet1").Select Worksheets("Sheet1").Name = "ASheet" Sheets("ASheet").Copy After:=Workbooks(MainFile).Sheets(TotalSheet) Workbooks(SubFile).Activate ActiveWorkbook.Close Workbooks(MainFile).Activate Sheets(TsumSheet).Select オープンしてコピーまではできているのですが・・・

  • エクセルVBA初心者です

    参考書籍を教えてください 質問1 会社でエクセルマクロを使う機会が増えました。大抵のことはマクロの記録で対応してますが、細かいファイル操作が出来ません。VBAを勉強する必要があると思ってます。何か良い参考書はありませんか? 質問2 ブックAでマクロAを作りました。マクロAの中で、ブックBのマクロBを実行させてます。マクロBは、計算結果としてブックB上に新シートを作成し、終了します。その後、マクロAに戻りブックBの新シート上のセル2個を選択しコピーし、ブックAにてペーストさせようとしてます。 マクロAはブックA上で「マクロの記録」で作成しました。 実行させると、マクロBの終了時点でストップするようです。 何がマズイのでしょうか?

  • Excelマクロで同じブックにCSVを読み込むには

    Excelの指定したシートにCSVファイルを読み込ませたいのですが 以下のVBAマクロを実行すると新しいブックが起動して 新しいブックの方にCSVファイルが読み込まれてしまうのですが これをVBAマクロを実行しているブックの指定のシート(例えばSheet3など)に 読み込ませたいのですがどのように記述すればよいのでしょうか。 よろしくお願いします(Excel2010) Sub Macro1()  ChDir "C:\test"  Workbooks.Open Filename:= "test1.csv" End Sub

  • 複数Bookオープンで片方閉じると全て閉じてしまうのはなぜ?

    Windows98環境でEXCEL2000を使用していますが、どうしても納得いかない現象に出くわしています。EXCELで複数Book(複数のXLSファイル)をオープンして作業することはよくあると思います。ところが、一方のBookファイルを閉じる(Close)と他のオープン中のBookも全て閉じて(Close)しまいます。さらに始末が悪いのは他のオープン中のBookが 編集中であっても、何のメッセージもなく問答無用で閉じてしまうのです。勿論編集中のデータは消えてしまっています。こんなことってあって良いのでしょうか。EXCEL97を使っていた時は、こんな現象はなかったと思います。使い方が悪いのか、EXCEL2000の不具合なのかわかりません。どうかご教授頂ければと思います。宜しくお願い申し上げます。

  • エクセルのVBAで新しくブックを開いた上でさらに…

    エクセルのVBAで新しくブックを開いた上でそのブックにVBAを埋め込む事はできますか? 分かりにくいと思うので具体的にかきます。 今、ブック1にコマンドボタンAがあり、このボタンAを押す事により 以下の2つを実現したいです。 (1)あたらしくブック2を開きます。 (2)更にこのブック2のシートにはコマンドボタンBができており (3)このボタンBの機能としてこのボタンBを押すと  ブック2のセルA1に数字1が入ります ブック2が開いた後で自分で、コマンドボタンBのマクロをブック2のモジュール内に書くのは簡単ですが、ブック1のコマンドボタンAを押したときに自動的にブック2のマクロを書き込みたいのです。 今、ボタンAを押すことで(1)と(2)まではできるのですが (3)のやり方がわかりません。 そもそもこういった事はできないのでしょうか? ご存知の人がいたら教えてください。よろしくお願いします。

  • ブックCloseでVBAが続かない

    エクセル2002を使用しています ブック(A)をコピーして名前(B)をつけて別ブックで保存しました ブック(A)を呼び出し後、ブック(B)を閉じてブック(A)のVBAを継続したいのですが 継続しません 作成したモジュールは以下です   Application.DisplayAlerts = False   '【不要なシートを削除する】 Sheets(Array("注文書入手差異表", "入手予定履歴", "main", "営C")).Select ActiveWindow.SelectedSheets.Delete   '【ThisWorkbook.Pathの『注文書確認フォルダ』の中に、名前をつけて別ブックで保存する   '   …ユーザーフォームを使用するのでマクロごと保存】 Dim myFolder As String Dim Filename As String myFolder = ThisWorkbook.Path & "\注文書確認フォルダ" Filename = Format(Date, "yyyymmdd") & "注文書入手予定表" If Dir$(myFolder, vbDirectory) = "" Then MkDir myFolder End If ActiveWorkbook.SaveAs Filename:= _ myFolder & "\" & Filename Application.DisplayAlerts = True '【保存した別ブック名を再取得】 Dim myName0 As String myName0 = ThisWorkbook.Name   '【コピー元のファイルを開く】 Dim myPath As String myPath = Application.Substitute(ThisWorkbook.Path, "\注文書確認フォルダ", "") Workbooks.Open (myPath & "\" & "注文書入手予定表")   MsgBox "【注文書確認フォルダ】の中に別ブックが作成されました"     '【保存した別ブックを閉じる】 Workbooks(myName0).Activate Windows(myName0).Activate ActiveWorkbook.Close '******下のマクロが続かない***************** '====================== Call Macro6 '======================   VBA ステップインで原因を探ろうとしたのでですが   「中断モードでは入力できません」のメッセージがでて   デバッグができません   八方ふさがりの状態です。助けていただけませんか。

  • VBA でテキストファイルに読み書き

     エクセル2000のVBAを使用しています。 ブックAファイル名をブックBのセルに入力して、ブックAをインデックスの様な扱いのファイルを作成使用としたのですが、ブック間で変数のやり取りは出来ないと思います。できるんですか??  その為、txtファイルを変数代わりに使おうと思っているのですが、 入出力の方法が良くわかりません。  簡単にブックBのセルの値をtxtファイルに書き込んでブックAで、 そのtxtファイルを読み込む様なVBAのコード教えて下さい。 初心者ですけど・・。