我想使用VBA代码以编程方式将一些引用连接到我的VBA项目,即不使用工具>引用手动设置引用。这可能吗?例如Microsoft office 12.0 Object library。
答案 0 :(得分:5)
您没有提到Office应用程序。在MS Access中,您可以使用:
ReferenceFromFile "C:\Program Files\Common Files\Microsoft Shared\OFFICE14\MSO.DLL"
也就是说,给出你想要添加的引用的完整路径。
来自:http://wiki.lessthandot.com/index.php/Add,_Remove,_Check_References
同样,在Excel中:
ActiveWorkbook.VBProject.References.AddFromFile "C:\Program Files\Common Files\Microsoft Shared\OFFICE14\MSO.DLL"
列出Excel中的引用: Dim ref As Reference
For Each ref In ActiveWorkbook.VBProject.References
Debug.Print ref.Description; " -- "; ref.FullPath
Next
这会在我的机器上返回一个特定工作簿上的以下内容:
Visual Basic For Applications -- C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA7\VBE7.DLL
Microsoft Excel 14.0 Object Library -- C:\Program Files\Microsoft Office\Office14\EXCEL.EXE
OLE Automation -- C:\Windows\system32\stdole2.tlb
Microsoft Forms 2.0 Object Library -- C:\Windows\system32\FM20.DLL
Microsoft ActiveX Data Objects 6.0 Library -- C:\Program Files\Common Files\System\ado\msado15.dll
Microsoft XML, v6.0 -- C:\Windows\System32\msxml6.dll
Microsoft Office 14.0 Access database engine Object Library -- C:\Program Files\Common Files\Microsoft Shared\OFFICE14\ACEDAO.DLL
Microsoft Visual Basic for Applications Extensibility 5.3 -- C:\Program Files (x86)\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB
Microsoft Office 14.0 Object Library -- C:\Program Files\Common Files\Microsoft Shared\OFFICE14\MSO.DLL
答案 1 :(得分:3)
对完整路径的引用充满了危险,并且当代码在不同的计算机或不同版本中使用时会导致问题。
最好使用GUID,在大多数(但不是所有实例)中,GUID对于不同版本的应用程序保持不变。
如果您为Excel 2010编写了需要在Excel 2010和Excel 2013中使用的代码,这将非常有用。
答案 2 :(得分:0)
可以找到MSO.dll文件的备用位置:
C:\ Program Files(x86)\ Common Files \ microsoft shared \ oFFICE11
只需设置工具>参考>浏览到上面的路径并找到MSO.dll