1

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

1 回答 1

1

因为SaveAs是一个Method对象Workbook,所以不能赋值,所以不能有如下形式的语句:

    wb.SaveAs = .....

SaveAs的MSDN 文档显示它可以通过位置或名称传递许多参数:

表达式.SaveAs(文件名、文件格式、密码、WriteResPassword、ReadOnlyRecommended、CreateBackup、AccessMode、ConflictResolution、AddToMru、TextCodepage、TextVisualLayout、Local

表达式表示 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

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


但要记住的要点是......你不能为 a 赋值Method

于 2016-10-21T18:07:10.453 回答