ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: citypanther

vba动态添加引用的两种方法

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2013-10-6 08:17 | 显示全部楼层
本帖已被收录到知识树中,索引项:VBE环境开发
很好的帖子,多谢楼主共享

TA的精华主题

TA的得分主题

发表于 2015-8-27 08:53 | 显示全部楼层
mark   ,找到了,学习下,感谢

TA的精华主题

TA的得分主题

发表于 2015-8-27 08:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
mark   ,找到了,学习下,感谢

TA的精华主题

TA的得分主题

发表于 2016-7-3 21:23 | 显示全部楼层

ps 有了

本帖最后由 lcjy11185 于 2016-7-3 22:37 编辑

为什么我得不到引用的。以上两个都不行。我的版本是2010ps ,原来要打开信任对VBA工程对象模型的访问。

TA的精华主题

TA的得分主题

发表于 2016-7-4 09:45 | 显示全部楼层
citypanther 发表于 2011-6-10 00:04
这样的dll是不是需要先进行注册才能用这种方法? 如果需要注册的话还是比较麻烦的。

请教,自己编写的。如果采用上述方法,DLL名称是否要加上路径和扩展名?

TA的精华主题

TA的得分主题

发表于 2016-12-17 20:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
回复楼上,安装注册dll后,应用是不用加上路径和扩展名的,如
dim obj As Object
Set obj = CreateObject("DLL名.类名")
obj.过程名(参数1,2,3)
Set obj = nothing

TA的精华主题

TA的得分主题

发表于 2016-12-18 10:31 | 显示全部楼层
SWKJMEQ 发表于 2016-12-17 20:36
回复楼上,安装注册dll后,应用是不用加上路径和扩展名的,如
dim obj As Object
Set obj = CreateObject ...

谢谢您的帮助

TA的精华主题

TA的得分主题

发表于 2016-12-18 10:33 | 显示全部楼层
本帖最后由 sunny_8848 于 2016-12-18 10:34 编辑
baomaboy 发表于 2011-6-9 07:50
谢谢楼主分享,贴上以前收集的一篇类似文章,仅供参考。

一直卡在自动注册这一步上,期待您的经验分享。上面提供的链接打不开了

TA的精华主题

TA的得分主题

发表于 2016-12-24 14:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
“一直卡在自动注册这一步上”,怎么个应用情况呢?

TA的精华主题

TA的得分主题

发表于 2017-2-23 15:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 算命先生kaven 于 2017-2-23 15:30 编辑

我根据这段代码做了个小小的修改,想解决丢失Microsoft Windows Common Controls 6.0 (SP6)的问题,但好象没有效果。代码运行是没有问题的,我试过,但运行后还是丢失。

下面是我修改的代码:
Private Sub aas()

    '遍历所有已使用的引用

    Dim g        As Integer
    Dim Ref()
        
    g = 1
    Set refed = ThisWorkbook.VBProject.References
    ReDim Ref(refed.Count, 4)
     
   
    For f = 1 To refed.Count
        With refed.Item(f)
            Ref(f - 1, 1) = .Name
            Sheet2.Cells(f, 1) = Ref(f - 1, 1)
            Ref(f - 1, 2) = .GUID
            Sheet2.Cells(f, 2) = Ref(f - 1, 2)
            Ref(f - 1, 3) = .Major
            Sheet2.Cells(f, 3) = Ref(f - 1, 3)
            Ref(f - 1, 4) = .Minor
            Sheet2.Cells(f, 4) = Ref(f - 1, 4)
        End With
        'f = f + 1
    Next
      
    For g = refed.Count To 1 Step -1
        Set theRef = refed.Item(g)
        If theRef.IsBroken = True Then
            refed.Remove theRef
        End If
    Next g
   
    Err.Clear
   
    Dim errmsg As String
    For g = 0 To f - 1
        refed.AddFromGuid GUID:=Ref(g, 2), Major:=Ref(g, 3), Minor:=Ref(g, 4)
        Select Case Err.Number
            Case Is = 32813
                '引用已经加载,无需做任何事情
            Case Is = vbNullString
                '成功加载
            Case Else
                '加载出现错误,保存错误信息
            errmsg = errmsg & Ref(g, 0) & "出现错误错误"
        End Select
    Next g
    If errmsg <> "" Then
        MsgBox errmsg
    End If
    On Error GoTo 0
   
    Exit Sub

ERRHandle:
    MsgBox (Err.Description & "加载失败,请联系管理员!")
   
End Sub

请高手指点一二,不胜感激。
引用.PNG
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 02:59 , Processed in 0.037354 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表