什么是VBAProject关键字?

use*_*973 2 excel vba keyword vbe dynamic-library

在“ 对象浏览器”窗口中,有一个正在使用的库的列表。

默认情况下,它带有:

  • Excel(Microsoft Excel 版本对象库)
  • Office(Microsoft Office 版本对象库)
  • stdole(OLE自动化)
  • VBA(用于应用程序的Visual Basic)
  • VBA项目

也可以通过使用VBIDE库(应用程序可扩展性版本的 Microsoft Visual Basic )(除了VBAProject)循环VBProject的引用来找到它们。

VBAProject是一个库,一个特殊关键字还是其他?找不到任何文档。

我想它也是VBA库的一部分,但是它似乎没有出现在引用中。

Dim ref As VBIDE.Reference

For Each ref In Application.VBE.VBProjects(1).References
  MsgBox ref.Name & " - " & ref.Description
Next
Run Code Online (Sandbox Code Playgroud)

VBAProject具有工作簿和工作表的代号。

我也无法手动删除也无法使用 Excel和VBA库编写代码来测试VBAProject是否会消失(Office和stdole是可移动的)。

Mat*_*don 5

这不是关键字,而是代表您的VBA项目的COM类型库的标识符。

编译VBA项目时,将在内部创建COM类型库-对象浏览器仅列出当前在编辑器中加载的所有类型库,其中包括您自己项目的库。

这就是为什么它列出所有文档模块的“代码名称”的原因-如果您添加了标准模块,它也会在那里:

对象浏览器,显示VBAProject中的类

而且,如果您重命名了项目(建议使用,特别是对于任何Excel外接程序项目,建议使用),则VBAProject不再可用:

MyAwesomeProject的成员


#FunFacts:当VBE首次初始化并创建一个新的VBA项目时,它会被调用VBProject几毫秒(VB6默认项目名称)-然后VBE将其重命名为VBAProject...这曾经引起Rubberduck问题!

  • @JvdV您在VBA中引用的任何库都是COM类型的库;VBA扎根于COM,您自己的VBA项目可编译为一个这样的库-我只知道这一点,因为在Rubberduck上工作会使您深入了解VBA的勇气...基本上从VBA运行时的角度来看,编译后的VBA代码不是与其他COM类型库没有什么不同。Office 2000“开发人员版”甚至具有一项功能,可让您从VBA项目中实际构建一个.dll。 (2认同)