excel 将工作簿保存在当前目录中,标题来自单元格

k4ymrczo  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(137)

我下载了需要根据单元格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

但调试器在最后一行报告错误:活动工作簿.另存为文件名:=相对路径
有什么线索能说明这是怎么做到的吗?

epggiuax

epggiuax1#

未指定错误,但如果您看到:

这意味着您试图将带有上述代码的工作簿保存为“XLS”(实际上,并不完全如此,请参见下文)--这意味着无宏格式。Excel会警告您将丢失代码。
还有一个问题--不管你编写的扩展名是什么,你都会将书保存为你所使用的Excel版本的default格式(对于2007和未来的版本,可能是XLSX或xlOpenXMLWorkbook,我有2007)。

解决方案:
1.若要避免第一个警告,请在运行宏之前将初始工作簿(即保存VBA代码的工作簿)保存为启用宏
1.在保存方法中添加适当的格式描述--在您的情况下是FileFormat:=xlExcel8--这样您将得到真正的XLS。
1.还有一件事-为了避免aby兼容性警报时,保存文件为XLS,添加.CheckCompatibility = False之前保存。结果代码应该是smth如下:

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

但是要小心-这样的构造会默默地覆盖任何现有的文件。希望这在某种程度上有帮助。

相关问题