2010-07-20 3 views
1

В Excel 2003 API есть метод GetSaveAsFilename, в котором появляется диалоговое окно «Сохранить как». Это происходит в различных параметров, включая тип файла (XLS, TXT, CSV, ...), что-то вроде следующего:Ошибка Excel API Сохранить как диалоговое окно

 
GetSaveAsFilename(Missing.Value, 
        "Microsoft Office Excel Workbook (*.xls), *.xls", 
        1, 
        Missing.Value, 
        Missing.Value); 

Моя проблема, я вижу только "* .xls" в диалоговом окне File тип выпадающего списка. Если я пропущу часть файла типа (второй параметр), я вижу в нем только «Все файлы (*. *)». Как я могу увидеть обычный список, содержащий все возможные типы файлов, не создавая длинную строку всех типов файлов и передавая ее методу?

ответ

3

Это link, которые могут быть вам полезны. Соответствующая должность является третьим пунктом. Это не идеальное решение (которое было бы некотором постоянным), но это может быть способ для вас программно пропустить доступные фильтры и создать строку для использования в GetSaveAsFilename.

Вот соответствующая часть коды:

Sub Main() 

'Declare a variable as a FileDialogFilters collection. 
Dim fdfs As FileDialogFilters 

'Declare a variable as a FileDialogFilter object. 
Dim fdf As FileDialogFilter 

'Set the FileDialogFilters collection variable to 
'the FileDialogFilters collection of the SaveAs dialog box. 
Set fdfs = Application.FileDialog(msoFileDialogSaveAs).Filters 

'Iterate through the description and extensions of each 
'default filter in the SaveAs dialog box. 
For Each fdf In fdfs 

    'Display the description of filters that include 
    Debug.Print fdf.Description & " (" & fdf.Extensions & ")," & fdf.Extensions 

Next fdf 

End Sub 

Надеется, что это помогает!

+0

Да, спасибо. Кстати, я смотрел на эту ссылку. Это должно сделать это. Я по-прежнему использую это решение в качестве крайней меры, поскольку по сути это обходной путь. Благодарю. – aliensurfer

+0

Нет проблем. Слишком плохо, что для этого нет постоянной. Похоже на то, что впустую печатает. Удачи! –

1

Вы хотите Application.Dialogs(xlDialogSaveAs).Show.

Sub showdialog() 
    Dim name as string 
    name = "test" 
    Application.Dialogs(xlDialogSaveAs).Show name 'drop the name parameter 
                'if you don't want to provide 
                'a default name 
End Sub 

Это позволит пользователю сохранить файл. Однако это не позволит вам получить имя, которое они выбрали напрямую. Он вернет логическое значение, истинное значение, которое они нажали ОК. Так как это диалоговое окно «Сохранить», вы можете увидеть, нажали ли они ОК, а затем проверить текущее имя файла. Это будет в основном сказать вам, что они сохранили файл.