我根据单元格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
但调试器在最后一行报告错误:ActiveWorkbook.SaveAs Filename:= relativePath
有关如何做到这一点的任何线索?
答案 0 :(得分:0)
未指定错误,但如果您看到:
这意味着您尝试使用上面的代码将工作簿保存为“XLS”(实际上,不完全如此,请参见下文) - 这意味着无宏格式。 Excel警告您,您将丢失代码。
还有一个问题 - 无论您使用何种扩展程序,您的代码都会将该图书保存为您使用的Excel版本的默认格式(对于2007版和未来版本,可能是XLSX或xlOpenXMLWorkbook
,我有2007)。因此,您将打开保存的文件,打开类似的内容:
解决方案:
FileFormat:=xlExcel8
- 因此您将获得真正的XLS。还有一件事 - 在将文件保存为XLS时要避免aby兼容性警报,请在保存之前添加.CheckCompatibility = False
。结果代码应该像那样:
Sub SaveToRelativePath()
Dim relativePath As String, sname As String
sname = ActiveWorkbook.Worksheets(1).Range("A1") & ".xls"
relativePath = Application.ActiveWorkbook.Path & "\" & sname
Application.DisplayAlerts = False
ActiveWorkbook.CheckCompatibility = False
ActiveWorkbook.SaveAs Filename:=relativePath, FileFormat:=xlExcel8
Application.DisplayAlerts = True
End Sub
但要小心 - 这样的构造会无声地覆盖任何现有文件。希望有点帮助。