Как заставить Microsoft Word запускать макрос VBA каждый раз перед сохранением любого документа? Можно ли это сделать без добавления макросов в сам документ?
Вы можете подписаться на события приложения в Document_Open
, используя WithEvents
и обычные имена методов ( VariableName_EventName
). Также работает в шаблонах.
Вы можете поместить этот код в объект ThisDocument
или создать отдельный модуль класса, как описано здесь.
Частное приложение WithEvents как Word.ApplicationPrivate Sub Document_Open () Set App = Word.ApplicationEnd SubPrivate Sub App_DocumentBeforeSave (ByVal Doc как документ, SaveAsUI как логическое, Отменить как логическое) MsgBox ("BeforeSave") End Sub
Список всех событий приложения.
Вы должны добавить биты кода в нужном месте.
Это должно быть вверху вашей кодовой страницы среди ваших общедоступных переменных или постоянных отклонений
Закрытое приложение WithEvents как Word.Application
Затем добавьте это как событие открытия документа.
Private Sub Document_Open () Set App = Word.ApplicationEnd Sub
Это событие, которое запускается при выполнении команды сохранения Ctrl + s или сохранить значок. Я добавил свой собственный формат сохранения и печати, как я видел. Он наиболее полезен в случае, если люди заполняют формы, и вы не хотите, чтобы они перезаписывали исходный шаблон.
Private Sub App_DocumentBeforeSave (ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean) '' сохраните файл с помощью команды saveas2. ActiveDocument.SaveAs2 FileName: = "YourDocumentNameORVariable" + _ "Date_" + Format (Now (), "гг-мм-дд"), _FileFormat: = wdFormatDocumentDefault, _SaveFormsData: = True '' дополнение для печати файла при saveActiveDocument.PrintOut Фон: = True, Range: = wdPrintAllDocument, Copies: = 1, Collate:/= TrueEnd Sub code>
Подробнее о методах печати: Microsoft VBA — PrintOut
Подробнее о SaveAs2: Microsoft VBA — SaveAs2
Подробнее о формате файла для сохранения: Microsoft VBA — формат файла для сохранения
Вы должны добавить биты кода в ко правильное место.
Это должно быть вверху вашей кодовой страницы среди ваших общедоступных переменных или постоянных отклонений
Private WithEvents App как Word.Application
Затем добавьте это как событие открытия документа.
Private Sub Document_Open () Set App = Word.ApplicationEnd Sub
Это событие, которое запускается по команде сохранения Ctrl + s или значку сохранения. Я добавил свой собственный формат сохранения и печати, как я видел. Он наиболее полезен в случае, если люди заполняют формы, и вы не хотите, чтобы они перезаписывали исходный шаблон.
Private Sub App_DocumentBeforeSave (ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean) '' сохраните файл с помощью команды saveas2. ActiveDocument.SaveAs2 FileName: = "YourDocumentNameORVariable" + _ "Date_" + Format (Now (), "гг-мм-дд"), _FileFormat: = wdFormatDocumentDefault, _SaveFormsData: = True '' дополнение для печати файла при saveActiveDocument.PrintOut Фон: = True, Range: = wdPrintAllDocument, Copies: = 1, Collate:/= TrueEnd Sub code>
Подробнее о методах печати: Microsoft VBA — PrintOut
Подробнее о SaveAs2: Microsoft VBA — SaveAs2
Подробнее о FileFormat для сохранения: Microsoft VBA — FileFormat для сохранения
попробуйте сохранить ваш файл в .xlsm
, затем закройте, откройте и снова сохраните. он должен работать нормально.
попробуйте сохранить файл в .xlsm
, затем закройте, откройте и снова сохраните. он должен работать нормально.