Как избежать появления окна с сообщением о буфере обмена при копировании больших объемов данных в Excel?

Как избежать появления окна с сообщением о буфере обмена при копировании больших объемов данных в Excel?

У меня есть макрос, который копирует 4 листа из одной книги в новую книгу и сохраняет ее под другим именем.

К сожалению, окно сообщения с вопросом, хочу ли яхотелось бы сделать этот большой объем данных доступным для других приложенийпревращает эту автоматизированную работу в слегка ручную.

Буду признателен за любые советы о том, как избежать появления окна с сообщением в буфере обмена или просто настроить автоматический ответ «Нет».

решение1

Я бы изменил макрос. Отключите оповещения при запуске макроса и включите их снова, когда макрос завершится. То есть Application.DisplayAlerts = False

решение2

Проблема в Application.DisplayAlerts = Falseтом, что он может скрыть оповещение, которое вам нужно увидеть.

Используйте Application.CutCopyMode = Falseпосле вставки, чтобы удалить ссылку на большой диапазон из буфера обмена.

решение3

Я согласен с Джоном Пелтье: «Проблема в 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 по этому поводу. Похоже, вы можете использовать несколько различных программных решений в своем макросе, чтобы решить эту проблему. Это зависит только от того, что именно вы копируете в буфер обмена.КБ № 287392

Вот соответствующая часть:

Метод 2: Выход из режима CutCopyMode
Если вы используете макрос Visual Basic для приложений для вырезания или копирования ячеек, вставьте следующую строку непосредственно перед строкой, закрывающей книгу.

workbook.Application.CutCopyMode = False

где «workbook» — это объект вашей рабочей книги.

ПРИМЕЧАНИЕ. Если задать для параметра CutCopyMode значение True или False, Excel может отменить режим вырезания или копирования.

Метод 3: Сохраните книгу
Если вы используете макрос Visual Basic для приложений для вырезания или копирования ячеек, вставьте следующую строку непосредственно перед строкой, закрывающей книгу.

workbook.Save

где "workbook" — это ваш объект workbook. Когда вы сохраняете workbook, Excel больше не находится в режиме Cut или Copy.

Связанный контент