Excel 2003 API有一个GetSaveAsFilename方法,可以弹出“另存为”对话框。这会采用各种参数,包括文件类型(xls,txt,csv,...),如下所示:
GetSaveAsFilename(Missing.Value, "Microsoft Office Excel Workbook (*.xls), *.xls", 1, Missing.Value, Missing.Value);
我的问题是,我在对话框文件类型下拉列表中只看到“* .xls”。如果我跳过文件类型部分(第二个参数),我只看到其中的“所有文件(*。*)”。如何在不创建所有文件类型的长字符串并将其传递给方法的情况下查看包含所有可能文件类型的普通列表?
答案 0 :(得分: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
希望这有帮助!
答案 1 :(得分: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
这将只允许用户保存文件。但是,这不允许您直接获取他们选择的名称。它将返回一个布尔值,true表示它们单击了OK。但是,由于它是“保存”对话框,您可以看到它们是否单击“确定”然后检查当前文件名。这基本上会告诉你他们将文件保存为。