Excel VBA自动添加证书

时间:2023-03-09 02:22:21
Excel VBA自动添加证书

---恢复内容开始---

  在说这个话题之前,我先解释一下为什么要加数字证书签名,它有什么作用,后面再解释如何添加。首先解释下证书添加的位置,如下图所示:

1、单击左上角的Office 按钮,选择右下角的Excel选项。

Excel VBA自动添加证书

弹出如下所示的界面,选择常用项,将在功能区显示“开发工具”选项卡(D)选项框选中。

Excel VBA自动添加证书

然后就可以在菜单项中看到“开发工具”这个菜单项,默认是不显示的。

Excel VBA自动添加证书

然后单击Visual Basic工具栏,如下所示

Excel VBA自动添加证书

打开后显示如下界面,也就是写宏代码的IDE,类型以前的VB6.0开发界面

Excel VBA自动添加证书

选择菜单项中的工具菜单,选择子菜单项数字签名

Excel VBA自动添加证书

将显示如下所示的对话框,第一副是还没有证书签名的,而第二副是包含证书签名的。

Excel VBA自动添加证书

有了证书签名后,你就可以设置以下选项来设置信任中心的宏访问了

Excel VBA自动添加证书

将显示如下的界面:

Excel VBA自动添加证书

好,相关的知识已经介绍完了,现在就转到如何通过代码自动实现证书签名,而不是人工去选择一个证书,那样就太case了,就像QA测试一样,人工知道一步一步是什么,但是要自动化去测试,那就要麻烦多了。当时好几个同事一起想一个好的解决方案,最终还是找到了一个比较靠谱的。那就先一步一步来介绍啦

先新建一个新的Excel文件,再修改后缀名为ZIP后再将其解压

Excel VBA自动添加证书

解压后将会看到如下所示的文件夹:

Excel VBA自动添加证书

将它们打开看看,究竟是什么东西:

这是_rels文件夹.rels文件的内容:

Excel VBA自动添加证书

这个docProps文件夹下面的app.xml与core.xml文件的内容:

Excel VBA自动添加证书

这个core.xml文件的内容:

Excel VBA自动添加证书

xl文件夹下面的子目录与文件

Excel VBA自动添加证书

以下是worksheets文件夹下面的sheet1.xml的内容:

Excel VBA自动添加证书

好了,通过上面的分析不知道你能不能发觉到原来excel的存储是通过一系统的xml文件或其他文件去存储它的相关信息的。如果是这们的话就可以通过操作

这些文件去间接操作excel.为了验证是否是这样,然后再找一个包含宏代码的excel文件,修改后缀名后再解压,看看它里面是什么文件:

xl文件夹下面多了两个文件vbaProject.bin和vbaProjectSignature.bin,一看这名字就是vba项目与vba项目签名啊

Excel VBA自动添加证书

打开_rels文件夹,看看里面有没有新的东东:

Excel VBA自动添加证书

好了,之前的猜想是正确的,Excel2007之后的存储采用的方式跟之前的是不一样的,之前用的是二进制的,那样肯定不好扩展

后来就是想怎么去操作这些文件以达到想要的操作,后来选用了比较成熟的epplus,它能够很好地操作excel里面的相关操作,好了,

这次先到这,肚子饿死了,下次具体讲代码方面的实现。