已打开Excel工作簿的VBA编辑问题:无法插入单元格内容
解决VBA访问已打开工作簿无法写入单元格的问题
你的代码运行无报错但无法写入文本,核心问题是用完整文件路径引用已打开的工作簿——Excel的Workbooks集合只能通过**纯文件名(不含路径)**或工作簿索引访问,用完整路径会找不到目标工作簿,导致赋值操作根本没执行。
给你修正后的代码,同时补充了保存操作和必要的细节:
Sub CheckIfWorkBookIsOpen() Dim FileNameFull As String Dim FileNameOnly As String Dim targetWB As Workbook FileNameFull = "C:\Users\rasch\Documents\Daily to do lists\My current to do list8.xlsx" FileNameOnly = Dir(FileNameFull) ' 从完整路径中提取纯文件名 If IsWBOpen(FileNameFull) Then MsgBox "File is Open" ' 用纯文件名引用已打开的目标工作簿 Set targetWB = Workbooks(FileNameOnly) ' 向指定单元格写入内容 targetWB.Worksheets(1).Cells(3, 3) = "Helloooooooo!" ' 保存修改 targetWB.Save Else MsgBox "File is Closed" End If Set targetWB = Nothing End Sub ' 标准的工作簿已打开判断函数(如果你的原有IsWBOpen有问题,替换成这个) Function IsWBOpen(WBFullName As String) As Boolean Dim WB As Workbook On Error Resume Next Set WB = Workbooks(Dir(WBFullName)) IsWBOpen = Err.Number = 0 Set WB = Nothing End Function
关键修正点:
- 用
Dir(FileNameFull)提取不带路径的文件名,这是Workbooks集合能识别的正确引用方式 - 直接使用当前Excel实例的
Workbooks集合,不需要额外获取Excel.Application对象(除非你要跨不同Excel实例操作,当前场景没必要) - 补充了
Save方法,满足你保存修改的需求 - 附带了标准的
IsWBOpen实现,避免原判断函数可能存在的逻辑问题
内容的提问来源于stack exchange,提问作者Rsquest
相关产品推荐
相关产品推荐

