アプリ版:「スタンプのみでお礼する」機能のリリースについて

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


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

A 回答 (2件)

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

Shellで起動すれば新たなインスタンスでExcelファイルが立ち上がるので


お互いに『我、関せず』状態になりますのでよろしいかと。
A.B.Cxlsは自分自身のことだけを考えれば良い。
Shell("excel.exe c:\A.xls")
Application.quit
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/03/14 10:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!