MS Office сохраняет файловый каталог типа с фильтром в vb

#vba #ms-office #filedialog

#vba #ms-office #файловый каталог

Вопрос:

Я хочу создать диалоговое окно «сохранить как» файл с фильтром, но это кажется невозможным с использованием класса FileDialog (библиотека объектов Microsoft Office 12.0). В документации это действительно упоминается здесь, см. Последний абзац, но не объясняется, почему? Есть ли другой способ добиться этого в vb?

Я нахожу странным, что класс FileDialog не допускает этого, потому что Word, Excel и Access имеют встроенную именно эту функцию сохранения.

Я понимаю, что файловый каталог может быть создан как средство выбора файлов (msoFileDialogFilePicker), которое допускает фильтры, но тогда это не позволяет выбрать файл, который еще не существует, что сводит на нет весь смысл.

Ответ №1:

По какой-то причине это является ограничением для этого конкретного класса, так как насчет;

 Dim vResult As Variant
vResult = Application.GetSaveAsFilename("default.blah", "blah files,*.blah,Text file,*.txt,All files,*.*", 0, "Title")
If VarType(vResult) = vbBoolean Then
    MsgBox "cancelled"
Else
    MsgBox vResult
End If
  

Комментарии:

1. Приложение. GetSaveAsFilename доступен только в Excel. Я надеялся на более общий ответ, чтобы я мог использовать его с Access.

2. Единственный другой способ, который я могу использовать, — это API GetSaveFileName, есть много примеров VBA (или вызов превосходного GetSaveAsFilename через COM в access, но это кажется немного неприятным)

Ответ №2:

Как упоминал @AlexK, единственный способ сделать это — использовать вызов Windows API. Смотрите здесь