OFFICE2007 自编宏使用 以及 "文件未找到 VBA6.DLL "错误处理

在excel中打开一个旧文件,文件中有VBA编写的宏. 以前启动只是提示宏是否启用,但是2007版本已经直接禁止了. 根据提示发现,在excel选项->信任中心->宏设置中,有关"对于在非信任位置的文档的宏"的选项,共有4项:

禁用所有宏,并且不通知

禁用所有宏,并发出通知

禁用无数字签署的所有宏

启用所用宏

对于受信任位置,信任中心中也可以配置,但觉得这样配置不方便,而且可能有外来的文件也是不能随便扩大信任位置的.那么前2项直接禁用,那就无法实用自己写的宏了,自然不能接受.第4条,存在安全隐患当然也不行,起始就是想实用自己编写的宏,因此只能选第三个了"禁用无数字签署的所有宏",那么现在的问题就是怎么给自己的宏加数字签名呢?

如果已经有购买了信任中心发布的证书那么就可以直接使用了.下面是针对没有申请过证书的一般人.office本身就提供这样一个工具,根据帮助提示,打开开始菜单的office项,选择Microsoft Office工具下的VBA项目的数字证书,输入名称就可以生成一个自行签署的数字证书,这个证书只能在本机使用,主要用于自己的VBA程序调试使用.

证书生成好了,打开EXCEL,在"开发工具"菜单栏中点击Visual Basic就可以打开项目,然后选择项目,点击菜单的工具->数字签名,如果没有使用过证书,则要先点"选择",找到刚才生成的证书,然后点击确定,那么项目就已经签名了.

到了这步,再尝试打开带有宏的EXCEL文件,结果仍然是禁止宏的,检查,宏确实使用自己的证书签名了,但是仍无法使用.看来是自己证书没有被信任.于是打开IE,进入到Internet选项->内容->证书,切换到"受信任的发布者",然后点击导入,找到刚才生成的证书.我也没注意刚才证书是生成到哪里,但是能在"个人"选页中找到,于是先导出到文件,然后在导入到"受信任的发布者"中.然后自己写的宏就启动启用了,可以使用了.

本来配置好数字签名后,原来的宏就可以使用了,也可以正确执行.但是随便改了一些代码.再次执行.却出现了错误"文件未找到 VBA6.DLL ",调试也指向宏的入口出,没发现上面问题,这部分代码都没有修改.非常奇怪.难道现在office 2007还要依赖与VB6的dll吗,查看系统目录和office目录都没有发现VBA6.DLL.没办法,只好在网上下载了一份VBA6.DLL.也不知道怎么处理,先把文件放到%WINOWS%\SYSTEM32目录下,在运行宏,错误依旧,尝试使用regsvr32安装dll,提示无法找到文件. 最后把VBA6.DLL文件放到了office的程序目录中. 这次宏剋运行没有错误了.

问题终于解决了. 但是有不少疑问. 

office 2007还要依赖与VB6的dll吗,为什么没有自带.

本来宏是可以执行的,但只是修改了一下,并没有增加什么内容,却无法使用了.必须配置VBA6.DLL.

这些问题暂时没搞懂.能用就好.先这样了.



展开阅读全文

没有更多推荐了,返回首页