Excel中“另存为”时,原始工作簿被关闭?

教育   教育   2024-08-08 07:00   上海  
在使用Excel VBA 进行“另存为”操作时,如果原始工作簿被关闭,可能会造成一些问题。(大家可以亲测下,我有一个带有宏的工作簿,另存为不带宏的工作簿后,原始工作簿自动关闭,另存后的工作簿显示激活状态)
要避免这种情况发生,可以考虑以下几种方法:
方法一:保存副本而不关闭原始工作簿
你可以在 VBA 代码中使用 SaveCopyAs 方法,这样可以保存当前工作簿的副本而不会关闭原始工作簿。示例代码如下:
Sub SaveCopyAs()    Dim filePath As String    filePath = "C:\Shared\Database.xlsx"    ThisWorkbook.SaveCopyAs filePathEnd Sub
这行代码将当前工作簿保存为 Database.xlsx 文件到指定的路径 C:\Shared\,而不会关闭原始工作簿。
方法二:使用“另存为”并保留原始工作簿
如果你仍然希望使用 SaveAs 方法,可以在保存之前,使用 Application.DisplayAlerts = False 来关闭可能出现的提示,并确保工作簿在保存后不会被关闭。以下是示例代码:
Sub SaveAsWorkbook()    Dim filePath As String    filePath = "C:\Shared\Database.xlsx"        Application.DisplayAlerts = False    ThisWorkbook.SaveAs fileName:=filePath, FileFormat:=xlOpenXMLWorkbook    Application.DisplayAlerts = TrueEnd Sub
请注意,虽然这个方法避免了关闭原始工作簿的问题,但在保存时仍然会弹出一些提示。
方法三:使用 Workbook 对象
另一个方法是创建一个新的 Workbook 对象,然后将当前工作簿的内容复制到新的工作簿中,再将新的工作簿保存为所需的格式:
Sub SaveAsNewWorkbook()    Dim newWorkbook As Workbook    Dim filePath As String    filePath = "C:\Shared\Database.xlsx"        ' 创建一个新的工作簿    Set newWorkbook = Workbooks.Add        ' 复制当前工作簿的内容到新工作簿    ThisWorkbook.Sheets.Copy Before:=newWorkbook.Sheets(1)        ' 保存新的工作簿    newWorkbook.SaveAs fileName:=filePath, FileFormat:=xlOpenXMLWorkbook        ' 关闭新的工作簿而不保存    newWorkbook.Close SaveChanges:=FalseEnd Sub
这样可以确保原始工作簿保持不变,而新创建的工作簿将被保存为指定的格式。
以上几种方法都可以帮助你避免在“另存为”过程中关闭原始工作簿。你可以根据自己的需求选择最适合的方法。

终身会员权益介绍


1、我录制的所有视频教程都可以免费学习,每门教程都有对应的素材,视频学习永久有效,视频学习中遇到的疑问可以直接找我答疑。


2、除了视频中遇到的问题之外,工作中遇到的问题也可以找我答疑(主要答疑Excel方面的问题)。


3、会员群里不定期会用腾讯会议开直播,根据大家的需求讲解一些实际工作中遇到的问题的解决方案、一些数据处理流程的优化等。


4、我百度网盘中一些常用的软件及学习资料都可以分享给您,包括各版本的Office,政企版WPS,WPS中的VBA插件,以及一些常用的软件等,即我网盘里的所有资源都可以共享给你。


5、终身会员可以分销我的课程,有提成的!


终身会员群只招收100名学员,XF:999,需要的朋友请加V:527240310


米宏Office
轻松学习OFFICE技能,让工作更高效!
 最新文章