Создать диалог SaveAs по маске

Автор Посетитель, 21 мая 2023, 12:23

Посетитель

Подскажите, в коде будет генерироваться путь сохранения и название файла *.doc, нужно открыть по сгенерированной маске диалог SavcAs, доя того, чтобы пользователь либо принял рекомендованный путь и название, либо изменил на свое.

Администратор

Написал вам два письма на почту с заголовком "Письмо с Форума по VBA, Excel и Word". Написал именно на почту, а не на форум.

Отобразить диалог "Сохранить как" и подставить в него путь и имя файла можно так. При этом путь должен существовать, чтобы он отобразился в этом диалоге. Если путь не существует, то Ворд отобразит другую папку.

Макрос
Sub Макрос()

    With Application.FileDialog(msoFileDialogSaveAs)
        .Title = "Сохранить как"
        .InitialFileName = "C:\Users\User\Desktop\Новая папка\Файл.docx"
        If .Show = False Then
            Exit Sub
        End If
    End With

End Sub
[свернуть]

После вызова диалога есть два варианта.

Вариант 1. Сохранение файла, используя диалог "Сохранить как"

В этом варианте нужно использовать метод Execute.

Макрос
Sub Макрос()

    With Application.FileDialog(msoFileDialogSaveAs)
        .Title = "Сохранить как"
        .InitialFileName = "C:\Users\User\Desktop\Новая папка\Файл.docx"
        If .Show = False Then
            Exit Sub
        End If
        .Execute
    End With

End Sub
[свернуть]

Вариант 2. Сохранение файла с использованием Document.SaveAs

С помощью диалога "Сохранить как" можно записать в переменную полное имя файла, которое указал пользователь в диалоге "Сохранить как". Затем можно с помощью макроса сделать анализ этого полного имени файла и принять решение: сохранять файл или нет.

Макрос
Sub Макрос()

    Dim Fn As String

    With Application.FileDialog(msoFileDialogSaveAs)
        .Title = "Сохранить как"
        .InitialFileName = "C:\Users\User\Desktop\Новая папка\Файл.docx"
        If .Show = False Then
            Exit Sub
        End If
        Fn = .SelectedItems(1)
    End With
   
    ActiveDocument.SaveAs FileName:=Fn, FileFormat:=wdFormatXMLDocument

End Sub
[свернуть]



Посетитель

Огромное спасибо, очень помогли!