Проблема с диалоговым окном «Сохранить как» в API Excel - PullRequest
1 голос
/ 20 июля 2010

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

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

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

Ответы [ 2 ]

3 голосов
/ 20 июля 2010

Вот ссылка , которая может помочь. Соответствующий пост является третьим пунктом. Это не идеальное решение (которое может быть константой), но это может быть способ для вас программно выполнить цикл доступных фильтров и создать строку для использования в 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

Надеюсь, это поможет!

1 голос
/ 20 июля 2010

Вы хотите 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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...