首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将xls转换为xlsx并删除旧文件

将xls转换为xlsx并删除旧文件
EN

Stack Overflow用户
提问于 2014-11-21 21:00:12
回答 1查看 2K关注 0票数 0

我使用以下宏将xls文件转换为xlsx。它的问题在于上面写着SaveAs的台词。这将创建第二个文件,一个具有原始xls扩展名,另一个具有xlsx扩展名。如果我简单地说“保存”,我就会得到一个错误。我如何删除xls文件或让宏执行Save而不是SaveAs?我们需要转换文件的原因是,当我们用电子邮件发送文件时,它的大小会更小。

代码语言:javascript
运行
复制
Dim s As String
s = ActiveWorkbook.FullName
s = Replace(s, "xls", "xlsx")
ActiveWorkbook.SaveAs Filename:=s, _
      FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
EN

回答 1

Stack Overflow用户

发布于 2014-11-21 21:18:32

在保存当前文件方面,您有两个选择:覆盖当前文件(类型相同),或者生成一个新的文件。这是一个限制(功能?)而不是VBA。

所以,要想得到你想要的,我们需要做更多的工作。我们需要的是FileSystemObject。这基本上允许您通过VBA与计算机上的文件和目录进行交互。我们需要做的第一件事是保留原始文件名;这将允许我们按名称删除它。然后,我们将创建FileSystemObject,并使用它调用DeleteFile方法。所以,您的代码应该看起来像

代码语言:javascript
运行
复制
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的引用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27070257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档