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,然后检查当前的文件名。 这基本上会告诉你他们把文件保存为。