Насколько я знаю, это довольно раздражающий факт (особенность?), Что некоторые методы / свойства VBA, например, Range.Clear
, уничтожают содержимое буфера обмена.Это часто расстраивает пользователей, которые даже не подозревают, что вы выполняете некоторый «скрытый» код VBA, например, при активации рабочих листов.
Мне известны рабочие области OpenClipboard/CloseClipboard
или DataObject
(как, например, обсуждается в Сохранение содержимого буфера обмена во время выполнения кода , но у меня возникло несколько недостатков (ссылки передаются натекст, вообще не работает для операций вырезания / вставки и т. д.).
У меня есть рабочее решение (готовое поделиться) для копирования / вставки (сохранение содержимого буфера обмена путем вставки на скрытый лист со смещением, чтобы избежатьссылки, чтобы получить недействительный, сохранить вставленный адрес диапазона - запустить ваш код - восстановить буфер обмена, скопировав сохраненный диапазон.) Мне не удалось найти решение, которое в достаточной степени обрабатывает вырезание / вставку.
Мой вопрос был бы, если кто-нибудьзнает о документации или имеет (даже неполный) список нарушающих методов / свойств, как, например, все варианты Clear
, установка Application.Calculation
, которые уничтожают буфер обмена и, таким образом, следует по возможности избегать.