2010-07-20 113 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”键入下拉菜单。如果我跳过文件类型部分(第二个参数),我会在其中看到“所有文件(*。*)”。我怎样才能看到包含所有可能的文件类型的正常列表,而无需创建所有文件类型的长字符串并将其传递给方法?

回答

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 2010-07-20 18:14:46

+0

没问题。这太糟糕了,没有一个恒定的。看起来像很多浪费的打字。祝你好运! – 2010-07-20 18:27:31

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 

这只允许用户保存文件。尽管如此,这将不允许您直接获取他们选择的名称。它会返回一个布尔值,这意味着他们点击OK。因为它是保存对话框,所以你可以看到他们是否点击OK,然后检查当前的文件名。这基本上会告诉你他们将文件保存为。