VBA更新只读工作簿后无法关闭的问题求助
问题分析
调用UpdateFromFile更新只读工作簿后,Excel会将该工作簿标记为“已修改”状态,但由于工作簿是以只读模式打开的,无法保存修改。直接调用Close方法时,Excel会触发保存确认交互,代码未处理该逻辑导致报错。
解决方案
修改关闭只读工作簿的代码,明确指定不保存更改:
wb_readOnly.Close SaveChanges:=False
完整修改后的代码:
Option Explicit Public xlApp As New Application Public wb_readWrite As Workbook Public wb_readOnly As Workbook Sub main() Dim path As String path = ThisWorkbook.path & "\Data.xlsx" Set wb_readOnly = Workbooks.Open(path, readOnly:=True) Set wb_readWrite = xlApp.Workbooks.Open(path, readOnly:=False) wb_readWrite.Sheets(1).Cells(1, 1) = InputBox("Input your data") wb_readWrite.Save MsgBox "Update Now" wb_readOnly.UpdateFromFile wb_readWrite.Close wb_readOnly.Close SaveChanges:=False '添加SaveChanges参数 Set wb_readWrite = Nothing Set wb_readOnly = Nothing xlApp.Quit '关闭新创建的Excel实例,避免后台残留进程 Set xlApp = Nothing End Sub
额外注意事项
- 新创建的
xlApp实例使用完毕后必须调用xlApp.Quit并释放对象,否则会有Excel进程在后台占用系统资源。 - 若不想让Excel标记只读工作簿为已修改,也可在
UpdateFromFile后手动设置wb_readOnly.Saved = True,这样关闭时即使不指定SaveChanges也不会触发保存提示。
内容的提问来源于stack exchange,提问作者Abu Bakr
相关产品推荐
相关产品推荐

