运行时错误'91'
对象变量或 With 块变量没有设置
今天用了一段VBA小程序,在同事机器上能用,在我机器上用就是不行,具体是这段代码报错:
Set Sheet1 = ThisWorkbook.Worksheets(1)
调试时添加监视发现,ThisWorkbook对象是有效的,可以输出文档名称,但其子对象Worksheets、sheets等东东全部是nothing
网上也找不到有效解决办法,什么注册控件,安装office补丁包都试了,也没解决,就差重装office。
仔细观察,发现问题有这3个特点:
1.同事机器上的Excel2007上能用,我机器上Excel2007就不能用
2.VBA程序是用Excel2003写的,我用的Excel2007打开执行
3.将Excel2003文件另存为2007的xlsx文件时,总提示文件中宏无法保存,要求选用支持宏的文件类型。选择支持宏的2007 xlsm格式,还是不行
最先老怀疑的是2007安装有问题,因为之前装过2003,然后又卸载再装2007,可能有些东西没卸载干净,导致2003跟2007冲突。当然这种怀疑只能靠重装2007来验证。
不甘心重装,又仔细查看过之前查看过的Excel2007安全中心设置,这次勾选了这个选项:
Excel选项 --- 信任中心设置 --- 加载项, 勾选“要求受信任的发布者签署应用程序加载项”
勾选这项后,原来不能运行的VBA程序能正常运行了。
虽然不知道微软做了什么鸟设置,但问题总算是解决了。Excel2007 用得很不爽,被迫适应后,又这样那样的问题。
把解决方法记下来,搜到的TX可以参考下。