C# Excel API另存为对话框问题

C# Excel API另存为对话框问题,c#,.net,excel,vba,C#,.net,Excel,Vba,Excel2003API有一个GetSaveAsFilename方法,可以弹出“另存为”对话框。这将采用各种参数,包括文件类型(xls、txt、csv等),如下所示: GetSaveAsFilename(Missing.Value, "Microsoft Office Excel Workbook (*.xls), *.xls", 1, Missing.Value,

Excel2003API有一个GetSaveAsFilename方法,可以弹出“另存为”对话框。这将采用各种参数,包括文件类型(xls、txt、csv等),如下所示:

GetSaveAsFilename(Missing.Value, "Microsoft Office Excel Workbook (*.xls), *.xls", 1, Missing.Value, Missing.Value); GetSaveAsFilename(缺少.Value, “Microsoft Office Excel工作簿(*.xls),*.xls”, 1. 缺少。值, 缺失值);
我的问题是,我在对话框文件类型下拉列表中只看到“*.xls”。如果跳过文件类型部分(第2个参数),则只会看到其中的“所有文件(**)”。如何才能看到包含所有可能文件类型的常规列表,而不创建所有文件类型的长字符串并将其传递给方法?

您需要
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。由于这是“保存”对话框,您可以查看他们是否单击“确定”,然后检查当前文件名。这将基本上告诉您他们将文件保存为什么。

您需要
应用程序对话框(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。由于这是“保存”对话框,您可以查看他们是否单击“确定”,然后检查当前文件名。这将基本上告诉您他们将文件保存为什么。

这里有一个可能会有所帮助的方法。有关职位是第三项。这不是一个理想的解决方案(可能是一个常量),但它可能是一种通过编程方式循环使用可用过滤器并构建字符串以在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
希望这有帮助

这里有一个可能会有所帮助的方法。有关职位是第三项。这不是一个理想的解决方案(可能是一个常量),但它可能是一种通过编程方式循环使用可用过滤器并构建字符串以在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

希望这有帮助

是的,谢谢。巧合的是,我看到的正是这个链接。这应该可以做到。我仍然会将此解决方案作为最后手段,因为它本质上是一种解决方法。谢谢,没问题。可惜的是,没有一个常数。好像是浪费了很多打字时间。祝你好运是的,谢谢。巧合的是,我看到的正是这个链接。这应该可以做到。我仍然会将此解决方案作为最后手段,因为它本质上是一种解决方法。谢谢,没问题。可惜的是,没有一个常数。好像是浪费了很多打字时间。祝你好运