如何用vba自动添加前期引用?

文章转载自:http://www.exceloffice.net/archives/2065。感谢原作者的整理。未经作者同意请勿随便转载。

在编写vba代码时,遇到需要使用的对象,有两种引用方式,一种是前期引用,也就是先在“工具”菜单下的“引用”命令中添加需要引用的库,如下图所示。

另一种是直接用 CreateObject(“Scripting.Dictionary”)语句添加的后期引用。

这两种的区别就是,前期引用可以直接列出成员属性、方法列表,后期引用不可以直接列出成员属性、方法列表。

前期引用一般都是通过手动添加要引用的库的方式实现,如果需要用vba代码自动添加需要的引用库,可以使用

References对象的AddFromGuid方法或者AddFromFile方法。

其中AddFromGuid方法直接根据全局唯一标识符字符串globally unique identifier (GUID) 添加引用,这种方法可以跨平台、跨版本、跨系统都有效。

AddFromFile方法是通过添加具体的文件路径的方法引用,这种方法有很大的局限性,不同的系统、不同的安装路径都会导致同一个库的路径不一致。

AddFromGuid方法的语法如下:

AddFromGuid(guid, major, minor) As Reference

其中参数guid, major, minor分别表示引用的全局唯一标识符,major版本号和minor版本号。

具体的某个引用的guid, major, minor参数如何获得呢?

可以通过先手动添加要引用的库,然后用如下的代码列举:

Sub QQ1722187970()
    Dim oWK As Worksheet
    Set oWK = ActiveSheet
    oWK.Cells.Clear
    arr = VBA.Array("引用的名称", "引用的路径", "GUID", "Major", "Minor", "说明")
    iCol = UBound(arr) + 1
    oWK.Range("a1").Resize(1, iCol) = arr
    Dim oRef
    With oWK
        i = 2
        '遍历所有的引用
        For Each oRef In ThisWorkbook.VBProject.References
            With oRef
                oWK.Cells(i, 1) = .Name
                oWK.Cells(i, 2) = .FullPath
                oWK.Cells(i, 3) = .GUID
                oWK.Cells(i, 4) = .Major
                oWK.Cells(i, 5) = .Minor
                oWK.Cells(i, 6) = .Description
                i = i + 1
            End With
        Next
    End With
End Sub

比如CreateObject(“Scripting.Dictionary”)对应的引用是Microsoft Scripting Runtime,它的GUID是

{420B2830-E718-11CF-893D-00A0C9054228},major是1,minor是0。

那么下次就可以通过以下的代码自动用vba添加Microsoft Scripting Runtime:

Sub QQ1722187970()
    Dim oRef
    Set oRef = ThisWorkbook.VBProject.References.AddFromGuid("{420B2830-E718-11CF-893D-00A0C9054228}", 1, 0)
End Sub

由于如果已经手动添加了库,再次用上述代码添加会弹出“名称冲突的提示”,此时,可以添加防错语句即可。

Sub QQ1722187970()
    On Error Resume Next
    Dim oRef 
    Set oRef = ThisWorkbook.VBProject.References.AddFromGuid("{420B2830-E718-11CF-893D-00A0C9054228}", 1, 0)
End Sub

全局唯一标识符字符串globally unique identifier (GUID) 是独立于应用程序之外的一个标识符,它不会因为引用的版本号的变化而变化。

通过AddFromGuid方法可以保证引用的准确性。

以下是一些常用的对象用AddFromGuid方法添加前期引用的代码:

Sub QQ1722187970()
    On Error Resume Next
'    Dim oRef 
    '添加WinHttp对象
    Set oRef = ThisWorkbook.VBProject.References.AddFromGuid("{662901FC-6951-4854-9EB2-D9A2570F2B2E}", 5, 1)
    '添加MSHTML对象
    Set oRef = ThisWorkbook.VBProject.References.AddFromGuid("{3050F1C5-98B5-11CF-BB82-00AA00BDCE0B}", 4, 0)
    '添加VBIDE对象
    Set oRef = ThisWorkbook.VBProject.References.AddFromGuid("{0002E157-0000-0000-C000-000000000046}", 5, 3)
    '添加word对象
    Set oRef = ThisWorkbook.VBProject.References.AddFromGuid("{00020905-0000-0000-C000-000000000046}", 8, 7)
    '添加ppt对象
    Set oRef = ThisWorkbook.VBProject.References.AddFromGuid("{91493440-5A91-11CF-8700-00AA0060263B}", 2, 12)
     '添加excel对象
    Set oRef = ThisWorkbook.VBProject.References.AddFromGuid("{00020813-0000-0000-C000-000000000046}", 1, 9)
End Sub

 

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值