Ошибка времени выполнения при отмене диалогового окна "Сохранить как", отображаемого через VBA

У меня есть макрос, который определенным образом форматирует документ, а затем сохраняет его, используя ActiveDocument.Save.

однако иногда документ еще не сохранен, а в некоторых случаях я не хочу его сохранять. К сожалению, нажатие кнопки "Отмена" при отображении диалога "Сохранить как" вызывает ошибку времени выполнения (4198) -

ошибка

кто-нибудь знает как я могу предотвратить это? Спасибо.

3 ответов


Обновлено: Теперь

1. Проверяет, был ли файл ранее сохранен или нет
2. Если файл не сохранен, для отображения диалог либо сохранить файл, либо обработать Cancel

код

Dim bSave As Boolean
If ActiveDocument.Path = vbNullString Then
bSave = Application.Dialogs(wdDialogFileSaveAs).Show
If Not bSave Then MsgBox "User cancelled", vbCritical
Else
ActiveDocument.Save
End If

пожалуйста, попробуйте следующее, добавив некоторые инструкции по обработке ошибок:

On Error Resume Next    'to omit error when cancel is pressed
   ActiveDocument.Save

If Err.Number <> 0 Then   'optional, to confirmed that is not saved
   MsgBox "Not saved"      
End If
On Error GoTo 0         'to return standard error operation

для разработчиков vsto, пожалуйста, перейдите сюда

    if (Globals.ThisAddIn.Application.ActiveDocument.Path == String.Empty)
        {
            Word.Dialog dlg;
            Object timeout = 3000;
            dlg = Globals.ThisAddIn.Application.Dialogs[
                Word.WdWordDialog.wdDialogFileSaveAs];
            int result = dlg.Display(ref timeout);
        }
        else
        {
            Globals.ThisAddIn.Application.ActiveDocument.Save();
        }

результат сохранит, какая кнопка нажата (0 - отмена, 1 - ок, 2 - закрыть)