在尝试关闭Excel 2007的 VBA工作簿之前,如何判断它的状态?
我发现(使用监视窗口时)工作簿至少有三种不同的状态。把定义为workbook的变量记作 wb:
wb无法展开,且其值为Nothingwb可以展开,包含大量字段wb可以展开,但没有字段,并且有一个孤立链接,其值为<No Variables>
这些状态可以通过以下方式实现:
- 常规初始化,
wb = Nothing的初始值为
set wb = Nothing
2.这些语句:
Const scPathFile as String = "C:\Dir\abc.xlsx"
Set wb = Workbooks.Open(scPathFile)
3.与第2条相同,但后面跟着:
wb.Close
因此,第三种状态是在工作簿关闭后、再次设置之前发生。问题在于我尚未找到一种识别该状态的方法。
- 为了完整性,我尝试了所有的IsXXXX函数,但未能得到能指示所述状态的结果。
- 我尝试用以下代码测试工作簿中的字段,例如
wb.Name:
<b = isNull(wb.Name)>
- 状态1然后
b = False - 状态2时会产生自动化错误(无论如何测试
wb.Name,都会出现相同的错误)。我无法使用On Error来处理这个错误。
是不是有些地方我漏掉了,还是这是一个设计问题?
解决方案
感谢这点,Tim。看起来确实起作用。问题归结为,你已经能够针对wb.Name捕捉到
Const scPathFile as String = "C:\Dir\abc.xlsx"
dim s as string
dim wb as workbook
set wb = workbooks.Open(scPathFile)
wb.Close
On Error Resume Next
s = wb.name
wb.Close
s的值为 ""。没有 On Error Resume Next 时,当工作簿尚未完成时会抛出自动化错误。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。