[[20110106172022]] 『他のワークブックが開いているかどうかを取得』(ノモ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『他のワークブックが開いているかどうかを取得』(ノモ)

 いつもお世話になります。

 あるワークブックの終了処理で、

 ActiveWorkbook.Close 

 で終了すると、エクセルそのものは起動したままで灰色の画面が残ります。

 Application.Quit

 で終了すると、他のワークブックが開いていても終了処理に入ります。

 他のワークブックが開いていなければ Quit で、他に開いていれば Close で
 終了したいのですが、「他のワークブックが開いていなければ」というような
 判断はどうすればいいのでしょうか。

 Excel2003 です。

 Personal.xls が無い条件であれば
 workbooks.Count が1なら自ブックだけしかないという判定でOKだと思います。

 Personalがあるのであれば、もしくは解らないのであれば

  Dim wb As Workbook, flg As Boolean
  For Each wb In Workbooks
    If wb.Name <> ActiveWorkbook.Name Then
      flg = True
      Exit For
    End If
  Next wb
  If flg Then
    ActiveWorkbook.Close
  Else
    Application.Quit
    ActiveWorkbook.Close
  End If

 のような感じでどうでしょうか?
 (momo)


 Personal.xls は、自分のPCではあるのですが、他のPCにコピーして使う
 こともあるので、マクロを使うことにしました。

 教えていただいたマクロで、Personal.xls があるとうまくいかなかったので、

 Dim wb As Workbook, flg As Boolean
    For Each wb In Workbooks
        If wb.NAME <> ActiveWorkbook.NAME And wb.NAME <> "PERSONAL.XLS" Then
            flg = True
            Exit For
        End If
    Next wb

    If flg Then
      ActiveWorkbook.Close
    Else
      Application.Quit
 '      ActiveWorkbook.Close
    End If

 とするとうまくいくようです。どうもありがとうございました。

 ※最後の ActiveWorkbook.Close はなくても、とりあえずうまくいくように
 見えるのですが、これを省くと何か具合の悪いことが起きる可能性があるの
 でしょうか?

 (ノモ)


 >教えていただいたマクロで、Personal.xls があるとうまくいかなかったので、
 テストしてないとこれですね・・・すみません。
 掲示のとおりで大丈夫そうですね。

 >これを省くと何か具合の悪いことが起きる可能性があるのでしょうか?
 原因は忘れましたが、以前正常に終了しない事があって習慣的に書いています。
 正常に動いているのであれば特に問題は無いんじゃないでしょうか?
 検証していませんが・・・

 (momo)

 >以前正常に終了しない事があって習慣的に書いています。

 そういうことでしたか。ということなら、残しておくことにします。
 どうもありがとうございました。

 (ノモ)

 解決後ですが、Application.Quitついて

 > Application.Quit
 > ActiveWorkbook.Close

http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_060.html

 ここで解説されていますので 参考にしてください。

 ichinose


 あ、そんな感じの事でしたね。
 ichinoseさんフォローありがとうございます。
 (momo)


 やはりちゃんとした理由があったのですね。Quit のところでそのまま終了
 するのではない、ということは知りませんでした。

 これで安心してコードに Quit と Close を書いておくことができます。
 ichinoseさん、momoさん、ありがとうございました。

 (ノモ)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.