前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA解析VBAProject 00

VBA解析VBAProject 00

作者头像
xyj
发布2020-09-10 16:11:27
2.4K0
发布2020-09-10 16:11:27
举报
文章被收录于专栏:VBA 学习VBA 学习

什么是VBAProject

在每一个带有VBA代码的文件里,都会有一个VBAProject,在VBA编辑器的工程资源窗口可以看到:

每个文件都有一个叫做VBAProject(默认名称,可以修改)的东西。

我们在编写VBA代码的时候,就是通过这里来点击添加模块、编写代码的。

01

2007版本结构

使用7z软件打开一个2007版本以上的Excel,可以看到有一个vbaProject.bin的文件,这里面就是保存了VBA相关的一些信息:

使用7z软件可以进一步的打开,主要的文件信息:

代码语言:javascript
复制
 0            Root Entry
 1            Root Entry\VBA
 2            Root Entry\VBA\Sheet1
 3            Root Entry\VBA\__SRP_5
 4            Root Entry\VBA\__SRP_4
 5            Root Entry\VBA\ThisWorkbook
 6            Root Entry\VBA\__SRP_6
 7            Root Entry\VBA\__SRP_7
 8            Root Entry\VBA\Sheet2
 9            Root Entry\VBA\__SRP_8
 10           Root Entry\VBA\__SRP_9
 11           Root Entry\VBA\Sheet3
 12           Root Entry\VBA\__SRP_a
 13           Root Entry\VBA\__SRP_b
 14           Root Entry\VBA\MMain
 15           Root Entry\VBA\__SRP_2
 16           Root Entry\VBA\__SRP_3
 17           Root Entry\VBA\_VBA_PROJECT
 18           Root Entry\VBA\dir
 19           Root Entry\VBA\__SRP_0
 20           Root Entry\VBA\__SRP_1
 21           Root Entry\PROJECTwm
 22           Root Entry\PROJECT

Root Entry这个顶层目录名称7z软件打开时看不到的。

MMain是模块的名称,其他一些也会视具体的文件不相同,但主要的VBA\dir、PROJECTwm、PROJECT等是一定会有的。

02

03版本结构

同样使用7z软件打开一个.xls后缀的03版本带VBA代码的Excel:

代码语言:javascript
复制
 0            Root Entry
 1            Root Entry\Workbook
 2            Root Entry\_VBA_PROJECT_CUR
 3            Root Entry\_VBA_PROJECT_CUR\VBA
 4            Root Entry\_VBA_PROJECT_CUR\VBA\ThisWorkbook
 5            Root Entry\_VBA_PROJECT_CUR\VBA\Sheet1
 6            Root Entry\_VBA_PROJECT_CUR\VBA\MMain
 7            Root Entry\_VBA_PROJECT_CUR\VBA\MString
 8            Root Entry\_VBA_PROJECT_CUR\VBA\MCDLL
 9            Root Entry\_VBA_PROJECT_CUR\VBA\MObject
 10           Root Entry\_VBA_PROJECT_CUR\VBA\模块1
 11           Root Entry\_VBA_PROJECT_CUR\VBA\CAVLTree
 12           Root Entry\_VBA_PROJECT_CUR\VBA\CNode
 13           Root Entry\_VBA_PROJECT_CUR\VBA\MTestTree
 14           Root Entry\_VBA_PROJECT_CUR\VBA\Sheet2
 15           Root Entry\_VBA_PROJECT_CUR\VBA\_VBA_PROJECT
 16           Root Entry\_VBA_PROJECT_CUR\VBA\dir
 17           Root Entry\_VBA_PROJECT_CUR\PROJECTwm
 18           Root Entry\_VBA_PROJECT_CUR\PROJECT
 19           Root Entry\[5]SummaryInformation
 20           Root Entry\[5]DocumentSummaryInformation
 21           Root Entry\[1]CompObj

Workbook、[5]SummaryInformation、[5]DocumentSummaryInformation、[1]CompObj是Excel文件的信息,和VBA不相关。

除具体的模块信息差异之外,VBA相关的信息和07版本相比,多了一个_VBA_PROJECT_CUR路径。

所以,VBAProject就是一个在Excel文件中的数据流,这个数据流记录了VBA相关的信息。

获取VBAProject结构可以看VBA解析复合文档相关文章。

主要参考官方文档[MS-OVBA]: Office VBA File Format Structure:

https://docs.microsoft.com/en-us/openspecs/office_file_formats/ms-ovba/575462ba-bf67-4190-9fac-c275523c75fc

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 VBA 学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是VBAProject
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档