不同版本的 Microsoft Office 使用的 VBE(Visual Basic Editor) 核心版本主要取决于其集成的 VBA(Visual Basic for Applications) 版本。以下是各 Office 版本与 VBA/VBE 版本的对应关系及关键信息:
1. Office 97 - 2003
VBA 版本: VBA 6.0(Office 97 为 VBA 5.0,Office 2000 开始升级为 VBA 6.0)
VBE 版本: 6.x
特点:
VBE 界面功能较为基础,支持宏录制和代码调试。
VBA 6.0 是长期稳定版本,后续 Office 版本(如 2003)仍沿用此版本。
2. Office 2007
VBA 版本: VBA 6.0(版本号 6.5)
VBE 版本: 6.5
更新:
界面与 Office 2003 类似,但修复了部分兼容性问题。
新增对 XML 文件格式(如 .xlsx, .docx)的支持,需注意宏代码与文件格式的兼容性。
3. Office 2010
VBA 版本: VBA 7.0(首次支持 64 位 Office)
VBE 版本: 7.0
关键变化:
引入 64 位 VBA,需使用 Declare PtrSafe 替代旧版 API 声明(如 Declare Function)。
界面优化,支持更高分辨率屏幕。
4. Office 2013/2016/2019
VBA 版本: VBA 7.1(Office 2013 起)
VBE 版本: 7.1
更新:
修复安全漏洞,提升稳定性。
新增部分对象模型(如 Excel 2016 新增 Workbook.GetPivotTableData 方法)。
界面无显著变化,但代码编辑器支持更智能的自动补全。
5. Office 365(Microsoft 365)
VBA 版本: VBA 7.1(持续更新)
VBE 版本: 7.1(界面与功能与 Office 2019 一致)
特点:
通过订阅模式定期更新,但 VBA 核心版本长期未变。
新增对现代功能的支持(如 Office JS API 与 VBA 混合开发)。
兼容性注意事项
64 位 Office:
Office 2010 及更高版本支持 64 位,需在代码中显式声明 PtrSafe。
示例:
' 旧版(32 位)
Declare Function GetTickCount Lib "kernel32" () As Long
' 64 位兼容
Declare PtrSafe Function GetTickCount Lib "kernel32" () As Long
对象模型差异:
新版本 Office 可能扩展对象模型(如 Excel 新增 Worksheet.Filter 对象),旧版代码可能需适配。
安全性限制:
Office 365 默认禁用互联网下载文件的宏,需手动启用(文件 → 信息 → 启用内容)。
总结
VBE 版本随 Office 升级小幅更新,核心功能保持稳定。
VBA 版本重大更新节点:VBA 6.0(Office 2000)、VBA 7.0(Office 2010)、VBA 7.1(Office 2013+)。
开发时需注意 64 位兼容性和对象模型差异,建议使用 #If Win64 条件编译提升兼容性。
有的虽然都是VBE7.DLL,但是不通用,Office2019的可能是7.1.11.27(4.22MB),Office2016的可能是7.1.10.97(2.58MB)。