浏览注册表以获取指导或使用路径,哪种方法最好。如果不再需要浏览注册表,这不是使用Guid的更好方法吗?Office并不总是安装在同一目录中。可以手动更改安装路径。版本号也是路径的一部分。我从来没有想到微软会在引入64位处理器之前将'(x86)'添加到'Program Files'中。如果可能的话,我会尽量避免使用路径。
下面的代码来自Siddharth Rout的答案,并具有附加功能以列出活动工作簿中使用的所有引用。如果我在更高版本的Excel中打开工作簿怎么办?在不改编VBA代码的情况下,工作簿是否仍然可以工作?我已经检查过Office 2003和2010的指南是否相同。希望微软不要在以后的版本中更改指南。
参数0,0(来自.AddFromGuid)应使用引用的最新版本(我无法对其进行测试)。
你怎么认为?当然,我们无法预测未来,但是我们可以做些什么来证明我们的代码版本呢?
Sub AddReferences(wbk As Workbook)
AddRef wbk, "{00025E01-0000-0000-C000-000000000046}", "DAO"
AddRef wbk, "{00020905-0000-0000-C000-000000000046}", "Word"
AddRef wbk, "{91493440-5A91-11CF-8700-00AA0060263B}", "PowerPoint"
End Sub
Sub AddRef(wbk As Workbook, sGuid As String, sRefName As String)
Dim i As Integer
On Error GoTo EH
With wbk.VBProject.References
For i = 1 To .Count
If .Item(i).Name = sRefName Then
Exit For
End If
Next i
If i > .Count Then
.AddFromGuid sGuid, 0, 0
End If
End With
EX: Exit Sub
EH: MsgBox "Error in 'AddRef'" & vbCrLf & vbCrLf & err.Description
Resume EX
Resume
End Sub
Public Sub DebugPrintExistingRefs()
Dim i As Integer
With Application.ThisWorkbook.VBProject.References
For i = 1 To .Count
Debug.Print " AddRef wbk, """ & .Item(i).GUID & """, """ & .Item(i).Name & """"
Next i
End With
End Sub
上面的代码不再需要对“ Microsoft Visual Basic应用程序可扩展性”对象的引用。