我使用以下宏将xls文件转换为xlsx。它的问题在于上面写着SaveAs
的台词。这将创建第二个文件,一个具有原始xls扩展名,另一个具有xlsx扩展名。如果我简单地说“保存”,我就会得到一个错误。我如何删除xls文件或让宏执行Save而不是SaveAs?我们需要转换文件的原因是,当我们用电子邮件发送文件时,它的大小会更小。
Dim s As String
s = ActiveWorkbook.FullName
s = Replace(s, "xls", "xlsx")
ActiveWorkbook.SaveAs Filename:=s, _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
发布于 2014-11-21 21:18:32
在保存当前文件方面,您有两个选择:覆盖当前文件(类型相同),或者生成一个新的文件。这是一个限制(功能?)而不是VBA。
所以,要想得到你想要的,我们需要做更多的工作。我们需要的是FileSystemObject。这基本上允许您通过VBA与计算机上的文件和目录进行交互。我们需要做的第一件事是保留原始文件名;这将允许我们按名称删除它。然后,我们将创建FileSystemObject
,并使用它调用DeleteFile
方法。所以,您的代码应该看起来像
Dim old_name As String, new_name As String
old_name = ActiveWorkbook.FullName
new_name = Replace(old_name, "xls", "xlsx")
ActiveWorkbook.SaveAs Filename:=new_name, _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Dim FSO as FileSystemObject
Set FSO = New FileSystemObject
FSO.DeleteFile old_name
Set FSO = Nothing
注意,为了创建和使用Microsoft Scripting Runtime
,您需要设置对FileSystemObject的引用。
https://stackoverflow.com/questions/27070257
复制相似问题