• ベストアンサー

【Excel VBA】 ブッククローズ時の動作について

環境: WindowsXP Office2003 ThisWorkBookモジュールに、 Private Sub Workbook_BeforeClose(Cancel As Boolean) 'ブックの保存を要求しない ThisWorkbook.Saved = True End Sub と記述しているのですが、保存の有無を聞かれます。 しかしながら、ブックにより聞かれない場合もあります。 原因として考えられるのは、どのようなことでしょうか?

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 >保存の有無を聞かれます。 Private Sub Workbook_BeforeClose(Cancel As Boolean) 'ブックの保存を要求しない  ThisWorkbook.Saved = True End Sub 私が、ブックの保存を要求しないコードでは、そのような書き方はしません。それでは、単に、Saved プロパティを替えたに過ぎないし、イベントが動いていますから、コンマ何秒のタイムラグがあります。つまり、終了命令を出しても、まだ、Excelのブックは辛うじて生きているのだと思います。 だから、その部分は、  ThisWorkbook.Saved = True の変わりに、  ThisWorkbook.Close False としたらどうでしょうか?

motsu2006
質問者

お礼

Wendy02さん いつもご回答いただき本当にありがとうございます。 木・金と風邪でダウンしていたため、お返事が遅れたことまずはお詫び申し上げます。 さて、 なんとも不思議なことに ThisWorkbook.Saved = True こちらのままでも今日は保存の有無が表示されませんでした。 水曜日と何も変更していないのに……、不思議です。 ThisWorkbook.Close False こちらも実験してみました。 するとブックは確かに閉じますがエクセルは起動したままになりますね。 再度前者で失敗する現象が現れた場合、使用させていただきます。

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

#3の回答者です。 補足 >原因として考えられるのは、どのようなことでしょうか? たとえば、NOW()関数など自分で変化する関数やフィルタなど、終了前に、値を更新して終わろうとしますから、直前まで、ワークシートは働いて(生きて)いますから、Saved =True のフラグが立っても、また、False になってしまいます。 あるベテランの方が書いていたコードで、物議になったのですが、この周辺の動きは、マクロのコードで複雑な反応を示すことがあると聞きました。たとえば、Application.Quit の後に命令を加えて、反応するものがあるという話も聞きます。また、私の経験では、ワークブックと、VBEditor側との終了のタイミングが大幅に違う場合(遅れる)があります。自分のところでうまく行ったからといって、他人のExcelのところでうまくいくとは限らないむつかしさがあるようです。

motsu2006
質問者

お礼

なるほど、ちょっと私のレベルではついていけない話になったような気もしますが、非常に参考になります。 ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

>.Saved = True の.Saved の使い方を誤っているのでは。 http://officetanaka.net/excel/vba/file/file03.htm の ブックが変更されたか? のような使い方をするのではないですか。 Savedでは違う議論をしているような気がする。

motsu2006
質問者

お礼

ご回答、ありがとうございます。 お礼コメントが遅くなり申し訳ありません。 ちょっと私のレベルでは難しくなってきました、、、。ですがリンクは今後の参考にさせていただきます。

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.2

> 私が現在使用している端末では要求してくる、 > 他人のは要求してこない、 あなたのエクセルのセキュリティレベルが 他人のより高くなっているとか?

motsu2006
質問者

お礼

ご回答ありがとうございます。 >あなたのエクセルのセキュリティレベルが >他人のより高くなっているとか? →同じです。どれも"中"になっています。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

ThisWorkbook.Save だけでよくない?

motsu2006
質問者

補足

ご回答ありがとうございます。 保存はさせたくないのです 保存させずに、保存の有無を聞いてこさせずにブックをクローズするのが目的です。 また、同じエクセルブックでも使用端末によって要求の有無が違います。 私が現在使用している端末では要求してくる、 他人のは要求してこない、 マクロ以外のエクセル本体の問題でしょうか?

関連するQ&A