首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式添加没有VBE或VBIDE的VBA项目引用。

以编程方式添加没有VBE或VBIDE的VBA项目引用。
EN

Stack Overflow用户
提问于 2018-07-13 20:19:38
回答 2查看 5.2K关注 0票数 1

这与以编程方式添加but...without项目引用的老问题不同:是否有一种方法以编程方式添加引用、VBE或对VBIDE的现有引用?

许多微软应用程序都有内置的应用程序类VBE,并有自己的引用集合:Application.VBE.ActiveVBProject.References。这包括Access、Excel、Word、PowerPoint、Visio以及许多其他。但有些微软应用程序没有VBE,比如Outlook和Publisher。此外,有各种第三方软件包的VBA,如AutoCad和Corel绘图,但这些是否有VBE类是未知的。

对于那些没有VBE的应用程序,有什么完全编程的方法来添加对VBIDE的引用吗..?(假设它在系统上)

我愿意接受除了SendKeys以外的任何想法。我曾经想过在字符级别编辑文档文件。例如,如果深入到Excel文件的XML中,我肯定会找到存储VBA引用的标记。为了进行访问,它将是SaveToText和LoadFromText,然后深入挖掘文本文件。但对于其他应用程序,我对它们的文件结构一无所知,甚至几乎一无所知。

EN

回答 2

Stack Overflow用户

发布于 2018-07-14 16:34:36

Mathieu Guindon是对的,VBA需要被授予操作工作簿项目的访问权限,通常在安装时授予它一次,并且很少被撤销。Cindy是对的,引用存储在二进制blob中,因此钻入xml不会有帮助。

若要授予访问权限,请执行以下操作( Excel 2016)

  • 单击“文件然后在从左侧选择选项”进入的菜单,这将显示Excel选项对话框。
  • 在Excel选项对话框中,在左侧菜单上选择信任中心,这将显示信任中心窗格。
  • 在“信任中心”窗格中,单击“信任中心设置”,这将显示信任中心对话框。
  • 在“信任中心”对话框中,在“左手”菜单上,选择“宏设置”.
  • 在“宏设置”窗格中,选中“信任访问VBA项目对象模型”复选框。

因此,下面的代码适用于我,因为授予了访问权限。代码添加了Microsoft脚本运行时库(这是我最喜欢的非核心库)。

代码语言:javascript
复制
Sub Test()

    Dim objProj As Object 'VBIDE.VBProject
    Set objProj = ThisWorkbook.VBProject

    Dim vRefLoop As Variant

    Dim bIsMyReferencePresent As Boolean
    bIsMyReferencePresent = False
    For Each vRefLoop In objProj.References

        Debug.Print vRefLoop.Name
        If vRefLoop.Name = "Scripting" Then

            bIsMyReferencePresent = True

        End If

    Next

    If bIsMyReferencePresent = False Then

        objProj.References.AddFromFile "c:\windows\syswow64\scrrun.dll"

    End If

End Sub
票数 1
EN

Stack Overflow用户

发布于 2019-10-23 20:47:34

你的想法很有趣:

我曾经想过在字符级别编辑文档文件。例如,我确定如果深入到Excel文件的XML中

引用不是保存在XML中,而是保存在./vbaProject.bin中(用于Excel )。>5)在.xlsm文件中,它只是压缩存档。这个vbaProject.bin是zip存档中的二进制blob,但是有人试图对它进行解码,例如在 of解析器项目中有一些代码来检测VBA引用的数组。使用这段代码,应该可以为这个数组设计一个更新函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51332307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档