gpt4 book ai didi

excel - 打开 Excel 文件并另存为 .XLS

转载 作者:行者123 更新时间:2023-12-02 07:01:08 26 4
gpt4 key购买 nike

我有以下代码,我希望它打开保存为 .xlsx 的文件,然后使用相同的文件名再次保存它们,但这次保存为 .xls 文件,以便它们与 Excel 2003 兼容

Set app = CreateObject("Excel.Application")
Set fso = CreateObject("Scripting.FileSystemObject")

For Each f In fso.GetFolder("Y:\Billing_Common\autoemail").Files
If LCase(fso.GetExtensionName(f)) = "xlsx" Then
Set wb = app.Workbooks.Open(f.Path)

app.DisplayAlerts = False

wb.SaveAs "*.xls*"
wb.Close SaveChanges=True
app.Close
app.Quit

End if

Set f = Nothing
Set fso = Nothing
Next

最佳答案

Bathsheba已经指出,Set fso = Nothingapp.Quit 属于脚本末尾(循环之外)。不过,还有一些错误。

  • wb.SaveAs "*.xls*"

    您无法将工作簿保存为通配符名称。如果您想以当前名称保存工作簿,只需使用wb.Save。否则,您必须使用明确的名称(然后您还应该设置文件类型):

    wb.SaveAs "new.xlsx", 51

    wb.SaveAs "C:\path\to\new.xls", -4143
  • wb.Close SaveChanges=True

    VBScript 不支持命名参数(请参阅 here )。如果您想调用 Close 方法,并将 SaveChanges 参数设置为 True,则必须这样做:

    wb.Close True
  • app.Close

    应用程序对象没有 Close 方法。

不是错误,而是值得改进的地方:

  • app.DisplayAlerts = False 应该在循环开始之前执行,除非您也在循环内重新启用它。

  • 我建议您在创建应用程序对象后添加一行 app.Visible = False。当您必须调试脚本时,您只需将该值更改为 True 即可在桌面上显示应用程序。这对查找错误有很大帮助。

修复脚本:

Set app = CreateObject("Excel.Application")
app.Visible = False
app.DisplayAlerts = False

Set fso = CreateObject("Scripting.FileSystemObject")

For Each f In fso.GetFolder("Y:\Billing_Common\autoemail").Files
If LCase(fso.GetExtensionName(f)) = "xlsx" Then
Set wb = app.Workbooks.Open(f.Path)

wb.Save
wb.Close True
End if
Next

app.Quit
Set app = Nothing
Set fso = Nothing

关于excel - 打开 Excel 文件并另存为 .XLS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17464698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com