こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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を
入れてます。


 どなたかご教授願います。

投稿日時 - 2012-03-13 09:20:15

QNo.7359291

困ってます

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

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

投稿日時 - 2012-03-13 15:36:30

お礼

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

投稿日時 - 2012-03-14 10:13:54

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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メソッドを実行していないかも
知れません。トレースしてみてください。

投稿日時 - 2012-03-13 12:03:20

あなたにオススメの質問