将XLS保存到XLSM

时间:2018-10-23 08:22:04

标签: excel vba

运行宏时,Excel不在行中,因为它位于XLS中。

我想一开始将文件另存为XLSX,然后使宏在刚刚保存的XLSX文件上运行。它的名称应与XLS相同。

我的宏在另一个Excel工作簿中。我输入“ C2”要使用的Excel工作簿的路径,然后运行宏。

我有以下代码另存为XLSX,但它给了我一个错误:

aWbookIworkWith.SaveAs Filename:=myFileName, FileFormat:=xlOpenXMLWorkbook

错误是:

  

运行时错误'1004':
  无法访问该文件。请尝试以下方法之一:
  •确保指定的文件夹存在。
  •确保包含文件的文件夹不是只读的。
  •确保文件名不包含以下任何字符:<>? []:|或*
  •确保文件名/路径名不超过218个字符。**

1 个答案:

答案 0 :(得分:2)

尝试使用与原始名称相同的名称,但让FileFormat参数确定文件扩展名。

dim myFileName as string

if lcase(right(aWbookIworkWith.fullname, 4)) = ".xls" then
    myFileName = left(aWbookIworkWith.fullname, len(aWbookIworkWith.fullname)-4)
    aWbookIworkWith.SaveAs Filename:=myFileName, FileFormat:=xlOpenXMLWorkbook
else
    debug.print "not an XLS workbook"
end if

当然,包含此代码的VBA项目不应与aWbookIworkWith放在同一工作簿中,因为XLSX不能包含VBA项目。为此,请使用XLSM或XLSB文件格式。