Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA脚本在尝试另存为.XLSX时失败_Vba_Excel_Fso - Fatal编程技术网

VBA脚本在尝试另存为.XLSX时失败

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

已编写以下脚本以打开文件夹中的所有.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
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分配一个值