Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 什么';VBAPProject关键字是什么?_Excel_Vba_Keyword_Dynamic Library_Vbe - Fatal编程技术网

Excel 什么';VBAPProject关键字是什么?

Excel 什么';VBAPProject关键字是什么?,excel,vba,keyword,dynamic-library,vbe,Excel,Vba,Keyword,Dynamic Library,Vbe,在窗口中有一个正在使用的库的列表 默认情况下,它附带: Excel(Microsoft Excel版本对象库) Office(Microsoft Office版本对象库) stdole(OLE自动化) VBA(Visual Basic For Applications) VBA项目 也可以通过使用VBIDE库(Microsoft Visual Basic for Applications Extensibility版本)循环VBProject的引用(VBAProject除外)找到它们 VBA

在窗口中有一个正在使用的库的列表

默认情况下,它附带:

  • Excel(Microsoft Excel版本对象库)
  • Office(Microsoft Office版本对象库)
  • stdole(OLE自动化)
  • VBA(Visual Basic For Applications)
  • VBA项目
也可以通过使用VBIDE库(Microsoft Visual Basic for Applications Extensibility版本)循环VBProject的引用(VBAProject除外)找到它们

VBA项目是库、特殊关键字还是其他什么?找不到有关它的任何文档

我猜它也是VBA库的一部分,但它似乎没有出现在参考下面

Dim ref As VBIDE.Reference

For Each ref In Application.VBE.VBProjects(1).References
  MsgBox ref.Name & " - " & ref.Description
Next
VBAProject具有工作簿和工作表的代码名


我也无法删除Excel和VBA库,以测试VBA项目是否会消失(Office和stdole是可删除的)。

它不是关键字,而是表示VBA项目的COM类型库的标识符

编译VBA项目时,会在内部创建一个COM类型库—对象浏览器只是列出编辑器中当前加载的所有类型库,其中包括您自己项目的库

这就是为什么它列出了所有文档模块的“代码名”——如果您添加了一个标准模块,它也会出现:

如果重命名项目(尤其是任何Excel加载项项目),则它不再是
VBAProject



#FunFacts:当VBE第一次初始化并创建新的VBA项目时,它被称为
VBProject
,持续数毫秒(VB6默认项目名称)-然后VBE将其重命名为
VBAProject
…这通常会导致Rubberduck出现问题

回答得好,马修。如果你不太在意的话,可以提出一个附带的问题。你能在回答中解释一下COM类型库吗。(作为外国人)阅读这份文件有点令人困惑。看起来它定义了哪些对象属性和方法可以在运行时通过其他应用程序使用。例如,这包括非VBA项目吗?感谢您的深入解释和提示(我从未重命名过任何项目)。据我所知,
VBAProject
是一个已加载/正在运行的库,正如名称所示,它就是VBA项目本身。@JvdV在VBA中引用的任何库都是COM类型库;VBA深深植根于COM,您自己的VBA项目编译成这样一个库-我只知道这一点,因为在Rubberduck上工作会让您深入VBA的内心。。。基本上,从VBA运行时的角度来看,编译的VBA代码与任何其他COM类型库都没有什么不同。Office2000“开发者版”甚至有一个功能,可以让您从VBA项目中构建一个.dll。