У меня есть макрос, который копирует 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.