专栏名称: 完美Excel
Excel与VBA技术学习与实践
目录
相关文章推荐
完美Excel  ·  朱明勇律师的《刑辩私塾》 ·  4 天前  
Excel之家ExcelHome  ·  数据录入的几个坑 ·  4 天前  
Excel之家ExcelHome  ·  COUNTIF函数,这些用法会不会? ·  5 天前  
完美Excel  ·  秦时南月•细说微软MS Office的前生今世 ·  1 周前  
Excel之家ExcelHome  ·  金额显示没烦恼,就怕兜里钞票少 ·  1 周前  
51好读  ›  专栏  ›  完美Excel

加强版的使用VBA保存和关闭工作簿的代码

完美Excel  · 公众号  · Excel  · 2024-11-12 05:50

正文

学习Excel技术,关注微信公众号:

excelperfect


标签:VBA

有时候,我们需要使用VBA代码来保存并关闭工作簿,常用的代码如下:

Sub SaveAndClose() '保存并关闭当前工作簿 ActiveWorkbook.Save ActiveWindow.CloseEnd Sub

考虑一些例外情况,例如如果是只读工作簿或者是新建工作簿,上面的代码将会有问题。我们对上面的代码进行改进,验证当前工作簿不是只读工作簿,以及之前当前工作簿已经被保存过。

改进后的代码如下:

Sub SaveAndClosePlus() '保存并关闭当前工作簿 '验证当前工作簿不是只读的 '并且之前本工作簿已经保存 If Not ActiveWorkbook.ReadOnly And Len(ActiveWorkbook.Path) > 0 Then   ActiveWorkbook.Save   ActiveWindow.Close End IfEnd Sub

代码中:

ActiveWorkbook.ReadOnly

判断当前工作簿是否只读,若是则返回True,否则返回False。因为我们要保存的工作簿不应该是只读的,所以该属性应返回False,那么代码:

Not ActiveWorkbook.ReadOnly

返回True

如果该工作簿已经保存过,则其Path属性应返回该工作簿的文件路径,其长度肯定大于0,那么代码:

Len(ActiveWorkbook.Path) > 0

返回True

这两个条件使用And逻辑符连接,表明上述两个条件都返回True才会执行保存和关闭操作,也就是说只有当工作簿不是只读的且已经保存过才会执行保存和关闭操作。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。
欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。