这是因为Excel考虑到安全性的问题,默认是限制用户使用脚本直接访问VBProject程序,默认状态是没有设置为信任,因此把它的状态改为可信任状态即可。当打开Excel后,依次进入工具→宏→安全性,选择“可靠发行商”选项卡后,如图3-37所示。
图3-37
在红色边框区域可以看到“信任对于‘Visual Basic项目’的访问”,默认状态下Excel是不会对其进行信任的,把此选项选上。即可做到对VBProject信任状态了。说到这里有些读者会问:既然是全部动态的,那么出了这个问题还一定要手工干预才能够解决问题,那不是非常的被动吗,只要移植到其他计算机上就必须要在此处设置一下才行。在此告诉各位读者,其实完全不用在Excel中进行手工设置即可解决此问题。首先可以想一下,很多程序或者软件它的预设置都是存放在注册表中的,因此,只需要直接修改注册表即可,那要自动化注册表就很简单了,直接使用WSH对象即可轻松完成。接下来重新修改了脚本:
'创建WSH对象 Set oWshShell = CreateObject("wscript.shell") '创建EOM对象 Set eom = CreateObject("excel.application") '写入注册表,设置对VBProject进行信任 oWshShell.RegWrite _ "HKLM\SOFTWARE\Microsoft\Office\11.0\Excel\Security\AccessVBOM" _ , 1, "REG_DWORD" '打开D盘中的1.xls文件 Set oWorkbook = eom.Workbooks.Add '进入到宏编辑区,并获取到WorkBook的脚本模块对象 Set oModule = oWorkbook.VBProject.VBComponents.Item("ThisWorkbook") ' 直接动态导入函数库文件 oModule.CodeModule.AddFromFile "d:\1.bas" '执行脚本 oWorkbook.tt '关闭WorkBook,此处false代表不保存直接关闭 oWorkbook.Close false '退出Excel应用 eom.Quit '删除注册表 oWshShell.RegDelete _ "HKLM\SOFTWARE\Microsoft\Office\11.0\Excel\Security\AccessVBOM" '释放 Set oWshShell = Nothing Set eom = Nothing |
分析:
以上脚本和前面的脚本差别不是很大,只是在最开始和最后的地方加入了自动写和还原注册表。“HKLM\SOFTWARE\Microsoft\Office\11.0\Excel\Security\AccessVBOM”此路径的键值就是控制Excel自动连接VBProject的信任开关。在打开了此信任开关之后,脚本就可以顺利执行完毕。但是有一点需要注意,在最后需要把加入的键值删除掉来保证下一次执行时写入注册表不会出现系统错误。
本文选自《51Testing软件测试作品系列》之九——《精通QTP——自动化测试技术领航》。
本站经人民邮电出版社和作者的授权,近期将进行部分章节的独家连载,敬请期待!
版权声明:51Testing软件测试网获人民邮电出版社和作者授权独家连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
相关阅读: