| Excel Tips by pPoy |
| 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個 コピーした状態では、これらの処理は必要ないかもしれません。 |
☆ 感想をお知らせください (直接ブラウザから送信致します。メールアカウントは不要です。)
form mail はこちら
Copyright(C) pPoy 2006-2010