Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Вызов пользовательской формы при сохранении

Автор вопроса: KrimmelОтветов: 2

Как мне вызвать пользовательскую форму в VBA, когда пользователь нажимает кнопку "Сохранить" в MS Word?

vbams-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.

Похожие материалы