excel - 查找对象库vba的VBIDE.Reference.Name

标签 excel vba ms-access outlook powerpoint

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

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

最佳答案

我用它来获取我的引用信息:

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 所指出的,
您应该使用后期绑定(bind),而不是以编程方式添加引用!

为什么?

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

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

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

  1. 删除引用
  2. 将使用这些库的所有声明更改为 Dim ???作为对象
  3. 检查模块顶部是否有 Option Explicit(如果没有,请添加)
  4. 查找特定于应用的变量(Option Explicit 应向其抛出一条消息)
  5. 大量测试您的代码
  6. 导出模块供其他人使用!

关于excel - 查找对象库vba的VBIDE.Reference.Name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43137715/

相关文章:

vba - 仿真在 10k 周期时运行良好,但在 100k 周期时出现错误 13(类型不匹配)

sql-server - 通过 SSIS 创建并复制 Access 表到 SQL? SQL 2008

ruby - 由 ruby​​zip 压缩的 xlsx 无法被 Excel 读取

vba - Excel 宏 YesNo 消息框,Yes 和 No 的不同方向

vba - 在左侧 vba 设置一个单元格值为 0

vba - 在子表单中保存记录

excel - 我的 MS Access 数据太多。我如何使用这些数据?

sql-server - 更新 Access 2010 链接表连接

vba - Excel 2003 : Programmatic sort of sheet in different workbook

excel - 如果行被隐藏,则计算字符串的值