Excel API另存为对话框问题

Excel 2003 API具有popup“另存为”对话框的GetSaveAsFilename方法。 这需要各种参数,包括文件types(xls,txt,csv,…),如下所示:

 GetSaveAsFilename(Missing.Value,
                   “Microsoft Office Excel工作簿(* .xls),* .xls” ,
                   1,
                   Missing.Value,
                   Missing.Value);

我的问题是,我只在对话框文件types下拉菜单中看到“* .xls”。 如果我跳过文件types部分(第二个参数),我只看到“所有文件(*。*)”。 我怎么能看到包含所有可能的文件types的正常列表,而不创build一个长的string的所有文件types,并将其传递给方法?

这是一个可能有帮助的链接 。 相关post是第三项。 这不是一个理想的解决scheme(这将是一个常数),但它可能是一种方式,让您以编程方式遍历可用的filter,并build立一个string在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 

希望这可以帮助!

你想要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 

这将只允许用户保存文件。 但是这不会让你直接得到他们select的名字。 它会返回一个布尔值,这意味着他们点击OK。 既然是保存对话框,你可以看看是否点击OK,然后检查当前的文件名。 这基本上会告诉你他们把文件保存为。