1 つのワークブックから 4 つのシートを新しいワークブックにコピーし、別の名前で保存するマクロがあります。
残念ながら、メッセージボックスが私に尋ねるこの大量のデータを他のアプリケーションで利用できるようにしたいこの自動化されたジョブが若干手動化される原因となっています。
クリップボード メッセージ ボックスを回避する方法、または自動的に「いいえ」と回答するようにする方法に関するヒントがあれば、ぜひ教えてください。
答え1
マクロを修正します。マクロの開始時にアラートをオフにし、マクロの終了時にアラートをオンに戻します。つまり Application.DisplayAlerts = False
答え2
問題はApplication.DisplayAlerts = False
、確認する必要のあるアラートが隠れてしまう可能性があることです。
貼り付け後に使用しApplication.CutCopyMode = False
、クリップボードから大きな範囲へのリンクを削除します。
答え3
Jon Peltier 氏の意見に同意します。「問題は、Application.DisplayAlerts = False
確認する必要のあるアラートが隠れてしまう可能性があることです。」さらに、Application.DisplayAlerts = True
完了後に設定することを忘れないようにする必要があるため、貼り付けごとに 3 行のコードが必要になります。さらに、プログラムがそれより前に中断すると、Application.DisplayAlerts = True
Excel を終了するまで知らないうちにアラートがオフになっていることになります。
貼り付け後に彼の提案をテストしたところApplication.CutCopyMode = False
、問題なく動作しました。以下に例を示しますsomeSpreadsheet.xls
。
Workbooks.OpenText Filename:="someDirectory\someFile.txt", _
DataType:=xlDelimited, TextQualifier:=xlNone, _
Tab:=True
Cells.Select
Selection.Copy
Windows("someSpreadsheet.xls").Activate
ActiveSheet.Paste
Application.CutCopyMode = 0
Windows("someFile.txt").Activate
ActiveWorkbook.Close
答え4
これに関する MS ドキュメントを見つけました。マクロでいくつかの異なるプログラム ソリューションを使用してこの問題を解決できるようです。クリップボードにコピーする内容によって異なります。KB # 287392
関連する部分は次のとおりです。
方法2: CutCopyModeを終了する
Visual Basic for Applicationsマクロを使用してセルを切り取ったりコピーしたりする場合は、ブックを閉じる行の直前に次の行を挿入します。
workbook.Application.CutCopyMode = False
ここで、「workbook」はワークブック オブジェクトです。
注意: CutCopyMode を True または False に設定すると、Excel は切り取りモードまたはコピー モードをキャンセルする場合があります。
方法3: ワークブックを保存する
Visual Basic for Applications マクロを使用してセルを切り取ったりコピーしたりする場合は、ワークブックを閉じる行の直前に次の行を挿入します。
workbook.Save
ここで、「workbook」はワークブック オブジェクトです。ワークブックを保存すると、Excel は切り取りモードまたはコピー モードではなくなります。