尝试在 Word 2013 中构建一个相当简单的 VBA 脚本,以访问来自特定 Domino 数据库的数据。如果我求助于老式 OLE 自动化(参见第二个片段),我的脚本工作正常,但如果使用我非常喜欢的早期绑定的特定 Domino COM 对象,则不能。
我确保在我的 Windows 7 (x64) 机器上正确安装了 Word 2013和Notes 9.0.1 FP9。在 Word 的 VBA 编辑器中,我确保启用了对“Lotus Domino 对象”(domobj.tlb) 的引用。
我知道创建 NotesSession 对象有多种版本,我想我都测试了它们。这是“早期绑定”代码的一个示例:
Sub controlNotesCOM()
Dim sn As NotesSession
Dim db As NotesDatabase
Set sn = CreateObject("Lotus.NotesSession")
Call sn.Initialize
MsgBox sn.COMMONUSERNAME, , "UserName"
Set db = sn.GETDATABASE("", "mail\mymail.nsf")
If (db.IsOpen()) Then
MsgBox db.Size, , "Size"
Else
MsgBox "DB not open", , "ERROR"
End If
End Sub
在调试模式下运行此代码段,我在第 3 行收到运行时错误 429“Active X 组件无法创建对象”:
Set sn = CreateObject("Lotus.NotesSession")
我知道我过去运行过类似的代码,但那是在早期版本的 Notes和Word 中(不记得是哪个版本)。
但是,以下使用 OLE 自动化的老式方法仍然有效,所以我认为这不是注册表问题:
Sub controlNotesOLE()
Dim sn As Object
Dim db As Object
Set sn = CreateObject("Notes.NOTESSESSION")
'Call sn.Initialize
MsgBox sn.COMMONUSERNAME, , "UserName"
Set db = sn.GETDATABASE("", "mail\lmueller.nsf")
If (db.IsOpen()) Then
MsgBox db.Size, , "Size"
Else
MsgBox "DB not open", , "ERROR"
End If
End Sub
有人知道这里可能出了什么问题吗?无论出于何种原因,这可能是一个无法工作的组合吗?