Прежде всего, я посмотрел и не нашел ни одного.

Я хочу, чтобы макрос выполнялся всякий раз, когда происходит одно из следующих действий:

  1. Документ открыт
  2. Документ сохранен
  3. Текст вставлен в документ
  4. Документ увеличивается на одну страницу больше.
  5. Документ сжимается на одну страницу меньше.

Для первых 2 есть события, даже если технически второе перед сохранением, но есть ли для остальных трех? Если нет, могу ли я как-то добавить их?

Что касается события номер два, есть ли событие DocumentBeforeSave также при автосохранении?

2 ответа2

1

Я считаю, что вы можете переопределить некоторые функции VBA, назвав sub так же, как имя встроенного метода. В этом случае это должно помочь захватить событие.

Sub EditPaste()

Selection.Paste
'Other code

End Sub

Что касается захвата количества страниц в документе, вы можете использовать таймер для опроса количества страниц и действовать, если количество изменилось:

Private Sub Document_Open()

Application.OnTime When:=Now + TimeValue("00:00:01"), _
Name:="CheckPages"

End Sub

Sub CheckPages()

'
' Get pages using ActiveDocument.ActiveWindow.ActivePane.Pages.Count 
' Compare with page count stored via global variable
' If they don't match run code for your event.

'Rerun the macro in 1 second
Application.OnTime When:=Now + TimeValue("00:00:01"), _
Name:="CheckPages"

End Sub
1

Вы говорите о захвате / перехвате команд. Вы правы, есть события для open и save , но другие встречаются реже. Вот ссылка на некоторый код для Catch Paste. Я знаю, если фокусируется на Excel, но это может помочь вам в правильном направлении для того, что вы пытаетесь сделать.

Также ознакомьтесь с разделом Использование VBA для управления встроенными командами в Система Office 2007. В этой статье есть ссылка на документацию и справочные материалы SDK для разработчиков Office, которые также могут быть полезны.

Иметь ввиду; запуск макросов в сохраненном документе может не работать одинаково для каждого человека, если для Macro Security не установлено то же самое. Некоторые компьютеры могут блокировать их, что будет означать, что ваш документ будет работать не так, как вы хотите.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .