MS Office SaveAs типа FileDialog с фильтром в vb

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

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

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


person David    schedule 04.05.2011    source источник


Ответы (2)


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

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
person Alex K.    schedule 04.05.2011
comment
Application.GetSaveAsFilename доступен только в Excel. Я надеялся получить более общий ответ, чтобы использовать его с Access. - person David; 05.05.2011
comment
Единственный другой способ, о котором я могу думать, - это API GetSaveFileName, есть много примеров VBA (или вызов excels GetSaveAsFilename через COM в доступе, но это кажется немного неприятным) - person Alex K.; 05.05.2011

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

person David    schedule 05.07.2011