Как мне вызвать пользовательскую форму в VBA, когда пользователь нажимает кнопку «Сохранить» в MS Word?
Вызов пользовательской формы при сохранении
Ответы (2)
Для этого у вас есть два варианта: вы можете либо переопределить встроенные команды 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
person
Dirk Vollmar
schedule
28.07.2009
Пример, который должен помочь, см. в разделе Перехват таких событий, как сохранение и печать.
person
Galwegian
schedule
28.07.2009