web-dev-qa-db-ja.com

ブックを閉じるときにExcel VBAでクリップボードプロンプトを無効にする

Excelブックがあり、VBAコードを使用して別のブックを開き、元のデータをコピーしてから2番目のブックを閉じます。

2番目のワークブックを閉じるとき(Application.Close)、次のプロンプトが表示されます。

クリップボードを保存しますか?.

このプロンプトをバイパスするコマンドがVBAにありますか?

12
Craig T

2つのオプションを提供できます

  1. 直接コピー

あなたの説明に基づいて、私はあなたが次のようなことをしていると推測しています

Set wb2 = Application.Workbooks.Open("YourFile.xls")
wb2.Sheets("YourSheet").[<YourRange>].Copy
ThisWorkbook.Sheets("SomeSheet").Paste
wb2.close

この場合、クリップボードを介してコピーする必要はありません。このメソッドは、ソースから宛先に直接コピーします。クリップボードにデータなし=プロンプトなし

Set wb2 = Application.Workbooks.Open("YourFile.xls")
wb2.Sheets("YourSheet").[<YourRange>].Copy ThisWorkbook.Sheets("SomeSheet").Cells(<YourCell")
wb2.close
  1. プロンプトを表示しない

設定することで、すべてのアラートポップアップを防ぐことができます

Application.DisplayAlerts = False

[編集]

  1. 値をコピーする場合のみ:コピー/貼り付けを一切使用しない
Dim rSrc As Range
Dim rDst As Range
Set rSrc = wb2.Sheets("YourSheet").Range("YourRange")
Set rDst = ThisWorkbook.Sheets("SomeSheet").Cells("YourCell").Resize(rSrc.Rows.Count, rSrc.Columns.Count)
rDst = rSrc.Value
31
chris neilsen

もう1つの解決策を追加する場合は、次のコマンドを使用してクリップボードをキャンセルするだけです。

Application.CutCopyMode = False
14
Sergiu

過去にこの問題に遭遇しました-終了した時点で実際にクリップボードを必要としない場合の外観から、私が持っていた同じ簡単な解決策を使用できます。クリップボードをクリアするだけです。 :)

ActiveCell.Copy

クリス

3
Chris Rae

閉じる前にクリップボードをクリアするだけです。

Application.CutCopyMode=False
ActiveWindow.Close
0
Raleigh Paenitz

簡単な回避策があります。このアラートは、クリップボードに大量のデータがある場合にのみ表示されます。ブックを閉じる前にランダムなセルをコピーするだけで、表示されなくなります!

0
kid

変更を保存したくない場合、およびマクロを使用してExcelファイルを保存するときにその保存プロンプトを表示したくない場合は、このコードが役立ちます。

Sub Auto_Close()

     ThisWorkbook.Saved = True

End Sub

SavedプロパティがTrueに設定されているため、Excelはワークブックが既に保存され、最後の保存以降に変更が行われていないように応答し、保存プロンプトはありません。

0
Anil Chahal