Excel Tips by pPoy

トップへ←Top    VBAへVBA  VBA基礎へ VBA 基礎  一般へ一般  

Macro ABC ExcelVBAでBookを閉じるとき、クリップボードの警告を出さない方法《CutCopyMode》(Excel2002,Excel2003)
ExcelVBA で、Copy 後に Book を閉じるとき、そのまま閉じると以下のような警告メッセージがでる場合があります。

クリップボードに大きな情報があります。この情報を他のプログラムに貼り付けられるようにしますか?

これが出ると、折角スマートに閉じたつもりが、がっかりしてしまいます。
以下は、この警告メッセージを出さなくする方法です。

≪1. CutCopyMode を終了する≫
Book を閉じる前のコードに、以下の1行を入れます。
    Application.CutCopyMode = False       
上のコードを実行すると、クリップボードの中味がクリアされます。
ワークシート上では、コピーモード が終了し ウネウネ した点線が消えます。
この後で、Book を閉じると、クリップボードの警告メッセージは出ずに、綺麗に終了できます。

※ クリップボードの中味を別の処理で使用したい場合は、閉じるタイミングが重要です。

≪2. Book を保存して閉じる≫
Book を閉じる際に、保存します。
    Workbooks("Book1.xls").Close SaveChanges:=True 
上のコードを実行すると、「Book1.xls」 を保存してから終了します。
Excel は、保存時にコピーモードを終了しますので、この警告は出ません。

※ クリップボードの中味を別の処理で使用したい場合は、閉じるタイミングが重要です。

≪3. Book を保存前に、マクロの警告を止める≫
Book を閉じる前に、以下の1行を追加します。
    Application.DisplayAlerts = False
このコードによって、マクロの警告が出なくなっているため、クリップボードの警告は出ません。
Excel 終了によって、クリップボードの中味もクリアされます。
※ クリップボードの中味を別の処理で使用したい場合は、閉じるタイミングが重要です。

念のため、コードの最後に、以下のおまじないも書いてください。
※ マクロ終了時に警告メッセージは元に戻りますが、一応。。
    Application.DisplayAlerts = True

≪補足≫
Excel の仕様として、クリップボードに入っているセルの数が 100 以下の場合は、 警告メッセージが出ないそうです。

(そーいえば、普通に何も言われずに閉じてくれることもあったよーな。。。)
セルを 2〜3個 コピーした状態では、これらの処理は必要ないかもしれません。


この頁のTOPへTop
【念の為の注意書きです。】
このページ(下位ページ含む)の全ての物の無断転載を禁止いたします。
又、当ページ(下位ページ含む)に記載されていることは、全て自己の責任において実行してください。

☆ 感想をお知らせください (直接ブラウザから送信致します。メールアカウントは不要です。)
  form mail はこちら


Copyright(C) pPoy 2006-2010