【发布时间】:2016-10-21 09:24:41
【问题描述】:
已编写以下脚本以打开文件夹中的所有 .xlsm 文件类型并将它们保存为新目录中的 .xlsx 类型,但尝试另存为 .xlsx 时脚本一直失败。
返回的错误信息是运行时错误'1004'
所有解决此问题的尝试都失败了,非常感谢您的帮助,我提前感谢您。
Set fso = CreateObject("scripting.filesystemobject")
Set fils = fso.GetFolder("FILE LOCATION").Files
FldrPicker = "FILE LOCATION"
With FldrPicker
myPath = FldrPicker
End With
myExtension = "*.xlsm"
myfile = Dir(myPath & myExtension)
filepath = "NEW FILE LOCATION"
Do While myfile <> ""
Set wb = workbooks.Open(Filename:=myPath & myfile)
Application.DisplayAlerts = False
wb.SaveAs = myfile & ".xlsx"
wb.Close Savechanges:=True
Application.DisplayAlerts = True
Loop
【问题讨论】:
-
wb.SaveAs不能被赋值,你需要给它一个参数 - 即wb.SaveAs myfile & ".xlsx"(注意:如果你从“C”打开了一个名为“abc.xlsm”的文件:\Temp1\Temp2" 目录,您将在活动目录中创建一个名为“abc.xlsm.xlsx”的文件,这可能是 Excel 应用程序的存储位置 - 所以您可能真的想要 'wb.SaveAs myPath & Left( myfile, Len(myfile) - 5) & ".xlsx"`) -
我添加了以下参数,但返回相同的错误。
teamname = Left(myfile, Len(myfile) - 5) & ".xlsx"Destination = filepath & teamnamewb.SaveAs = Destination -
如果由于
Excel真的 不喜欢您尝试将macro enabled工作簿保存为纯文件的警告而触发错误,请添加Application.DisplayAlerts = False到代码的开头,Application.DisplayAlerts = True作为强制问题的结尾。 -
请阅读@YowE3K 答案。您仍在为
wb.SaveAs赋值