Как мне вызвать пользовательскую форму в VBA, когда пользователь нажимает кнопку "Сохранить" в MS Word?
Вопрос
Вызов пользовательской формы при сохранении
Ответы
Ответ 1 · рейтинг 2 · Dirk Vollmar
Для этого у вас есть два варианта: вы можете либо переопределить встроенные команды FileSave и FileSaveAs, либо создать обработчик событий для события DocumentBeforeSave приложения (что требует немного больше работы).
Переопределить встроенные команды можно, добавив следующий код в модуль VBA (соответствующим образом отрегулируйте тип отображаемой пользовательской формы):
' override File -> Save
Public Sub FileSave()
CustomSave
' call ActiveDocument.Save to actually save the document
End Sub
' override File -> Save As...
Public Sub FileSaveAs()
CustomSave
' call ActiveDocument.SaveAs to actually save the document
End Sub
Sub CustomSave()
Dim frm As New frmCustomSave
frm.Show
End Sub
Второй вариант можно реализовать, поместив следующий код в раздел Объекты Microsoft Word -> ThisDocument в редакторе VBA:
Option Explicit
Private WithEvents wdApp As Word.Application
Private Sub Document_New()
Set wdApp = Word.Application
End Sub
Private Sub Document_Open()
Set wdApp = Word.Application
End Sub
Private Sub wdApp_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
Dim frm As New frmCustomSave
frm.Show
End Sub
Ответ 2 · Galwegian
Пример, который должен помочь, см. в разделе Перехват таких событий, как сохранение и печать.
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.
Похожие материалы
- Получите содержимое папки sharepoint с помощью Excel VBA
- Доступ к Vba - найти нулевые и пустые значения
- Импортировать текстовый файл с разделителями табуляции в базу данных Access
- AltChunk искажает элемент управления форматированным текстовым содержимым
- Подчеркивание и выделение текста жирным шрифтом
- Пользовательский тип не определен - управление Word из Excel