尝试保存为.XLSX时,VBA脚本失败

时间:2016-10-21 09:24:41

标签: excel vba excel-vba fso

编写以下脚本是为了打开文件夹中的所有.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

1 个答案:

答案 0 :(得分:0)

由于SaveAsMethod对象的Workbook,因此无法为其分配值,因此您无法获得表单声明:

    wb.SaveAs = .....

MSDN documentation for SaveAs表明它可以通过位置或名称传递许多参数:

  

表达式 .SaveAs( FileName,FileFormat,Password,WriteResPassword,ReadOnlyRecommended,CreateBackup,AccessMode,ConflictResolution,AddToMru,TextCodepage,TextVisualLayout,Local

     

expression 表示Workbook对象的变量。

您编写的有效语法之一是:

    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

强制保存为非宏启用格式。

但要记住的要点是...... 您无法为Method 分配值。