我下载了需要根据单元格A1中包含的名称重命名的文件。该文件已经保存在当前目录中,因此我所要做的只是将其保存到当前目录中,文件名为调用A1,扩展名为“.xls”
已尝试此代码:
Sub SaveToRelativePath()
Dim relativePath As String, sname As String
sname = ActiveWorkbook.Worksheets(1).Range("A1") & ".xls"
relativePath = Application.ActiveWorkbook.Path & "\" & sname
ActiveWorkbook.SaveAs Filename:=relativePath
End Sub
但调试器在最后一行报告错误:活动工作簿.另存为文件名:=相对路径
有什么线索能说明这是怎么做到的吗?
1条答案
按热度按时间epggiuax1#
未指定错误,但如果您看到:
这意味着您试图将带有上述代码的工作簿保存为“XLS”(实际上,并不完全如此,请参见下文)--这意味着无宏格式。Excel会警告您将丢失代码。
还有一个问题--不管你编写的扩展名是什么,你都会将书保存为你所使用的Excel版本的default格式(对于2007和未来的版本,可能是XLSX或
xlOpenXMLWorkbook
,我有2007)。解决方案:
1.若要避免第一个警告,请在运行宏之前将初始工作簿(即保存VBA代码的工作簿)保存为启用宏。
1.在保存方法中添加适当的格式描述--在您的情况下是
FileFormat:=xlExcel8
--这样您将得到真正的XLS。1.还有一件事-为了避免aby兼容性警报时,保存文件为XLS,添加
.CheckCompatibility = False
之前保存。结果代码应该是smth如下:但是要小心-这样的构造会默默地覆盖任何现有的文件。希望这在某种程度上有帮助。