VBA脚本在尝试另存为.XLSX时失败
已编写以下脚本以打开文件夹中的所有.xlsm文件类型,并将其另存为新目录中的.xlsx类型,但在尝试另存为.xlsx时,脚本始终失败 返回的错误消息是运行时错误“1004” 所有试图补救的努力都失败了,任何帮助都是非常感谢的,我提前感谢你们VBA脚本在尝试另存为.XLSX时失败,vba,excel,fso,Vba,Excel,Fso,已编写以下脚本以打开文件夹中的所有.xlsm文件类型,并将其另存为新目录中的.xlsx类型,但在尝试另存为.xlsx时,脚本始终失败 返回的错误消息是运行时错误“1004” 所有试图补救的努力都失败了,任何帮助都是非常感谢的,我提前感谢你们 Set fso = CreateObject("scripting.filesystemobject") Set fils = fso.GetFolder("FILE LOCATION").Files FldrPicker = "FILE LOCATION
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
Set fso=CreateObject(“scripting.filesystemobject”)
设置fils=fso.GetFolder(“文件位置”).Files
FldrPicker=“文件位置”
用FldrPicker
myPath=FldrPicker
以
myExtension=“*.xlsm”
myfile=Dir(myPath&myExtension)
filepath=“新文件位置”
当我的文件“”时执行此操作
设置wb=workbooks.Open(文件名:=myPath&myfile)
Application.DisplayAlerts=False
wb.SaveAs=myfile&“.xlsx”
wb.Close Savechanges:=真
Application.DisplayAlerts=True
环
由于SaveAs
是工作簿
对象的方法
,因此无法为其赋值,因此不能使用以下形式的语句:
wb.SaveAs = .....
显示可以通过位置或名称传递许多参数:
expression.SaveAs(文件名、文件格式、密码、WriteResPassword、ReadOnlyRecommended、CreateBackup、AccessMode、ConflictResolution、AddToMru、TextCodepage、TextVisualYout、Local)
表达式表示工作簿对象的变量
您所写内容的有效语法之一是:
wb.SaveAs myfile & ".xlsx"
但是,如果您从“C:\Temp1\Temp2”目录中打开了一个名为“abc.xlsm”的文件,那么您将在当前目录中创建一个名为“abc.xlsm.xlsx”的文件,该目录可能是Excel应用程序的存储位置,因此您可能真的需要它
wb.SaveAs FileName:=myPath & Left(myfile, Len(myfile) - 5) & ".xlsx"
或者可能
wb.SaveAs FileName:=myPath & Left(myfile, Len(myfile) - 5) & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook
强制保存为非启用宏的格式
但要记住的要点是。。。无法为
方法分配值wb.SaveAs
无法分配值,您需要向其传递一个参数,即wb.SaveAs myfile&“.xlsx”
(注意:如果您从“C:\Temp1\Temp2”目录中打开了一个名为“abc.xlsm”的文件,您将创建一个名为“abc.xlsm.xlsx”的文件在active directory中,这可能是Excel应用程序的存储位置,因此您可能真的需要'wb.SaveAs myPath&Left(myfile,Len(myfile)-5)&.xlsx'`。我添加了以下参数,但返回了相同的错误teamname=Left(myfile,Len(myfile)-5)和“.xlsx”
Destination=filepath&teamname
wb.SaveAs=Destination
如果错误是由于以下警告触发的:Excel
确实不喜欢您尝试将启用了宏的工作簿保存为普通文件,在代码开头添加一个Application.DisplayAlerts=False
,在结尾添加一个Application.DisplayAlerts=True
,强制发布。请阅读@YowE3K-answer。您仍在为wb.SaveAs分配一个值