#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. Смотрите здесь