代码之家  ›  专栏  ›  技术社区  ›  user8666372

自动向可用引用添加引用

  •  1
  • user8666372  · 技术社区  · 7 年前

    我在网上搜索并阅读了相关文章,但没有找到问题的明确答案。

    我想总结一下我的工作。我正在使用第三方程序(Simpack)Com接口将数据和信息从Simpack程序中获取到我的excel工作表中。

    我正在使用 Set Srv = CreateObject("Simpack.Slv") 用于COM实现。但在此之前,我应该定义COM接口*。exe文件来自 Tools > References > Browse > C:\Program Files\Simpack-2018x\run\bin\win64\_simpack-com-slv.exe 当我第一次打开我的宏手册或先关闭它然后再打开时。我不能使用Simpack的COM库。因为它从来没有在“可用参考”部分列出过带勾号或不带勾号。所以我应该再去一次 工具(>);参考资料(>);浏览(>);C: \程序文件\ Simpack-2018x\run\bin\win64\U Simpack-com-slv。exe文件 使用Simpack库。

    我不知道这和我的绑定类型有关吗?或者我错过了一些重要的东西,但如果它能自动完成这个过程,那就太好了 工具(>);参考资料(>);浏览(>);C: \程序文件\ Simpack-2018x\run\bin\win64\U Simpack-com-slv。exe文件

    谨致问候。

    2 回复  |  直到 6 年前
        1
  •  1
  •   MarcinSzaleniec    7 年前

    首先,您需要允许对VBA项目进行编程访问。在Excel功能区上:开发人员->宏安全性并勾选“信任访问VBA项目对象模型”。然后您可以尝试以下操作:

    ThisWorkbook.VBProject.References.AddFromFile "C:\Program Files\Simpack-2018x\run\bin\win64\_simpack-com-slv.exe"
    
        2
  •  0
  •   Wookies-Will-Code    7 年前

    大概是这样吧。

    运行此命令以获取引用的GUID:

    '******** Commented out but finds dependent GUID references in the project
    'Dim obj As Object
    'For Each obj In ThisWorkbook.VBProject.References
        'Debug.Print "Name: ", obj.Name
        'Debug.Print "FullPath: ", obj.FullPath
        'Debug.Print "Version: ", obj.Major & "." & obj.Minor
        'Debug.Print "GUID: ", obj.GUID
    
    'Next obj
    '*******************************
    

    然后在代码模块中执行类似的操作,然后再添加引用。

    'VBA
    strGUID = "{000204EF-0000-0000-C000-000000000046}"
    
    'ALERT: Don't slay me for On Error Resume Next
    'I was doing this fairly quickly this morning
    On Error Resume Next
    ThisWorkbook.VBProject.References.AddFromGuid _
    GUID:=strGUID, Major:=1, Minor:=0
    

    我不会去交换VBA信托,那可能被认为是不好的行为。

    干杯Wookie