【问题标题】:Finding the VBIDE.Reference.Name of object libraries vba查找对象库 vba 的 VBIDE.Reference.Name
【发布时间】:2017-08-25 13:12:34
【问题描述】:

我用 VBA 找到了how to add a reference programmatically
这解释了如何使用库的名称以编程方式添加对象引用,
以“VBScript_RefExp_55”为例。

我的问题是如何找到此引用名称以在此代码中用于不同的对象库?
比如 PowerPoint Library 之类的?

【问题讨论】:

  • 为什么您需要以编程方式添加引用?如果您在工作簿中设置了引用,那么即使其他人使用它,它也会保留在工作簿中。
  • 我愿意。该宏将保存为 .bas 文件,并将在云端供人们在需要时访问和使用。我试图使这个过程尽可能简单。然而,这不是问题。如何做到这一点已在我的链接中得到解答。我需要知道如何找到正确的参考资料。
  • 手动添加,然后遍历引用并检查名称(如链接中的示例代码)。不过后期绑定会更容易、更可靠。
  • 好的,我会这样做的。谢谢,似乎有点不对劲,互联网上的某处没有参考资料库。
  • @Rory :只是戳一下,问我是否错过了将代码转换为后期绑定的一些步骤! ;)

标签: excel vba ms-access outlook powerpoint


【解决方案1】:

我用它来获取我的参考资料:

Private Sub ListProjectReferencesList()
    Dim i                   As Long
    Dim VBProj              As Object  'VBIDE.VBProject
    Dim VBComp              As Object 'VBIDE.VBComponent
    Set VBProj = Application.VBE.ActiveVBProject
    Dim strTmp              As String
    On Error Resume Next
    For i = 1 To VBProj.References.Count
        With VBProj.References.Item(i)
            Debug.Print "Description: " & .Description & vbNewLine & _
                        "FullPath: " & .FullPath & vbNewLine & _
                        "Major.Minor: " & .Major & "." & .Minor & vbNewLine & _
                        "Name: " & .Name & vbNewLine & _
                        "GUID: " & .GUID & vbNewLine & _
                        "Type: " & .Type
            Debug.Print "-------------------"
        End With 'VBProj.References.Item(i)
    Next i
End Sub

通常,我更喜欢使用 GUID 而不是名称来添加它。


但正如@Rory 所指出的,
您应该使用后期绑定而不是以编程方式添加引用

为什么?

因为要以编程方式添加它们,您的用户必须进入:

  1. 选项从中启动的应用程序(Excel,...)
  2. 信任中心
  3. 信任中心设置
  4. 宏设置选项卡
  5. 勾选信任对 VBA 项目对象模型的访问复选框
  6. 好的
  7. 好的

所以你最好用引用来完成你的代码,然后

  1. 删除引用
  2. 将使用这些库的所有声明更改为 Dim ??? As Object
  3. 检查模块顶部是否有Option Explicit(如果没有则添加)
  4. 寻找应用特定的变量Option Explicit 应该向它们发送消息)
  5. 大量测试您的代码
  6. 导出模块供他人使用!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多