Отключить запрос буфера обмена в Excel VBA при закрытии книги
У меня есть книга Excel, которая с помощью кода VBA, который открывает другую книгу, копирует некоторые данные в оригинал, а затем закрывает вторую книгу.
когда я закрываю вторую книгу (с помощью Application.Close
), Я получаю запрос:
вы хотите сохранить буфер обмена.
есть ли команда в VBA, которая будет обходить это приглашение?
6 ответов
Я могу предложить два варианта
- прямое копирование
по вашему описанию я предполагаю, что вы делаете что-то вроде
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
- подавить строке
вы можете отключить все всплывающие окна по настройка
Application.DisplayAlerts = False
[Edit]
- копировать только значения: не используйте copy / paste вообще
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
Если я могу добавить еще одно решение: вы можете просто отменить буфер обмена с помощью команды:
Application.CutCopyMode = False
Я ударил эту проблему в прошлом-с виду, если вам на самом деле не нужен буфер обмена в точке выхода, поэтому вы можете использовать то же самое простое решение, что и я. Просто очистите планшет. :)
ActiveCell.Copy
Крис
Если вы не хотите сохранять какие-либо изменения и не хотите, чтобы сохранить приглашение при сохранении файла Excel с помощью макроса, то этот фрагмент кода может быть полезен для вас
Sub Auto_Close()
ThisWorkbook.Saved = True
End Sub
- за Saved
свойству установлено значение True
, Excel отвечает так, как будто книга уже сохранена и никаких изменений не произошло с момента последнего сохранения, поэтому нет приглашения сохранить.
есть просто обойти. Предупреждение появляется только тогда, когда у вас есть большой объем данных в буфере обмена. Просто скопируйте случайную ячейку, прежде чем закрыть книгу, и она больше не появится!
предложенное решение edit работает, если вы замените строку
Set rDst = ThisWorkbook.Sheets("SomeSheet").Cells("YourCell").Resize(rSrc.Rows.Count, rSrc.Columns.Count)
С
Set rDst = ThisWorkbook.Sheets("SomeSheet").Range("YourRange").Resize(rSrc.Rows.Count, rSrc.Columns.Count)