尝试在Word 2013中构建一个相当简单的VBA脚本,以访问来自特定Domino数据库的数据。如果我使用老式的OLE自动化(请参阅第2片段),但我的脚本运行良好,但是如果我希望通过早期绑定使用特定的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
有人知道这里可能出什么问题吗?出于某种原因,这可能是不能起作用的组合吗?
答案 0 :(得分:1)
哦,亲爱的,我想我明白了: Runtime error 429 in VBA, but class is registered
Notes Client(仍然)是32位的,确实我安装了64位版本的Office2013。所以这很有意义。
(提示:链接的帖子中有一些解决此问题的技巧;并不十分适合我当前的项目,但可能适合其他人)