У меня есть макрос, который выводит в текстовый файл.

Мне нужно диалоговое окно с типом "сохранить", которое позволяет мне получить путь к еще не существующему файлу, открыв диалоговое окно проводника.

До сих пор я управлял подсказкой, которая требует от вас ввести имя файла с полным путем (не идеально) или сохранить в существующий файл, используя диалоговое окно в стиле "открыть".

Пример кода ниже.

Sub UseOpenDialog()
    Dim DestFile As String

    ' Open the file dialog
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Filters.Clear
        .Filters.Add "Text File", "*.txt"
        .Filters.Add "All Files", "*.*"

        If .Show = True Then
            DestFile = .SelectedItems(1)
            dosomething (DestFile)
        Else: MsgBox "nothing selected"
        End If

    End With
End Sub

Sub TypeFullPath()
    Dim DestFile As String

    DestFile = InputBox("Enter the destination filename" _
     & Chr(10) & "(with complete path):", "Title")
    dosomething (DestFile)
End Sub

Sub dosomething(x)

    MsgBox x

End Sub

1 ответ1

0

Нашел это после некоторого поиска

В Excel есть «Приложение.GetSaveAsFilename ", которая возвращает строку полного пути к файлу, используя поле стиля сохранения как, или FALSE, если приглашение завершено.

Реализация для сохранения в текстовый файл, с соответствующими подсказками.

Sub saveas()
    Dim Destfile As Variant
saveas::     'bring up saveas dialogue with filters
        Destfile = Application.GetSaveAsFilename(title:="Export", _
            fileFilter:= _
            "Text Files (*.txt; *.csv), *.txt;*.csv," & _
            "All Files (*.*),*.*")

        'exit sub with message if no file selected
        If Destfile = False Then
            MsgBox "no file selected"
            Exit Sub

        'prompt user for overwrite confirmation
        ElseIf Dir(Destfile) <> "" Then
            If MsgBox("Overwrite " & Dir(Destfile) & "?", vbYesNo) = vbNo Then GoTo saveas
        'beware of velociraptors
        End If

    dosomething (Destfile)

End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .