如何使用vba在excel2010中将保存类型从excel工作簿更改为excel 97-2003?

Posted

技术标签:

【中文标题】如何使用vba在excel2010中将保存类型从excel工作簿更改为excel 97-2003?【英文标题】:How to change save type from excel workbook to excel 97-2003 in excel2010 using vba? 【发布时间】:2013-02-12 08:12:11 【问题描述】:

由于activewoorkbook.close true,我的宏打开了 saveFileDialog 但它默认选择其保存类型为“Excel 工作簿”。我需要将其更改为“excel 97-2003 工作簿”。即使我在 excel 保存选项中更改了我的默认格式。但它仅在我手动保存文件时才有效。谁能给我一些建议?

Sub OpenAllWorkbooksnew() 设置 destWB = ActiveWorkbook 将 DestCell 调暗为范围

    Dim cwb As Workbook
    For Each cwb In Workbooks

        **Call donemovementReport**
        ActiveWorkbook.Close True
        ActiveWorkbook.Close False
    Next cwb
End Sub

【问题讨论】:

所有你需要得到这样的代码(和任何类似的)是使用宏记录器) 【参考方案1】:

您可以调用 SaveAs 方法(DisplayAlerts = False)而不是 Close。首先更改目标目录并在 SaveAs 中指定文件格式。这对您有帮助吗?

Dim targetDirectory As String
targetDirectory = "c:\temp\VBA\test\"
ChDir targetDirectory

Application.DisplayAlerts = False
Workbooks(ActiveWorkbook.Name).SaveAs ActiveWorkbook.Name, xlExcel8
Application.DisplayAlerts = True

ActiveWorkbook.Close False

【讨论】:

丹尼尔感谢您的解决。但我想出现 savefiledialog 和上面的代码将文件直接保存到路径。 啊哈,所以如果要显示保存对话框,只需删除 DisplayAlerts = False。它应该显示保存对话框,并且文件格式将预设为 Excel 97-2003。【参考方案2】:

嗯,我不知道我是否理解。您可以先显示文件对话框,从中获取文件名及其路径,然后调用另存为方法。

Sub test2()

    Dim targetDirectory As String
    targetDirectory = "c:\temp\VBA\test\"
    ChDir targetDirectory

    Dim excelFileName As Variant
    excelFileName = Application.GetSaveAsFilename(FileFilter:="Excel Files,*.xls,All Files,*.*", Title:="Save As File Name")
    If excelFileName = False Then Exit Sub
    If LCase$(Right$(excelFileName, 4)) <> ".xls" Then
      excelFileName = excelFileName & ".xls"
    End If

    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs fileName:=excelFileName, FileFormat:=xlExcel8
    Application.DisplayAlerts = True

    ActiveWorkbook.Close False

End Sub

或者这样你可以只显示另存为对话框:

Application.Dialogs(xlDialogSaveAs).Show "c:\temp\VBA\test\test.xls"

【讨论】:

以上是关于如何使用vba在excel2010中将保存类型从excel工作簿更改为excel 97-2003?的主要内容,如果未能解决你的问题,请参考以下文章

每次使用VBA在excel 2010中保存一个不同名称的文件[关闭]

使用 VBA 从 Access 表中将选定的列导入 Excel

当关闭文档是excel vba为啥宏代码自动消失

如何在Excel表格中将系统导出的部门的代码,用公式或者vba转换成文字?

如何(如果可能)从 VBA Excel 2010 的工作表中定义和填充全局数组变量?

从 Access 2010 VBA 打开 Excel 2010 文件