代码之家  ›  专栏  ›  技术社区  ›  Lothar Mueller

从Word VBA脚本调用CreateObject(“lotus.notessession”)时出现错误429

  •  1
  • Lothar Mueller  · 技术社区  · 8 年前

    尝试在Word 2013中构建一个相当简单的VBA脚本,从特定的Domino数据库访问数据。如果我使用老式的OLE自动化(请参见第二个代码片段),我的脚本工作得很好,但是如果使用特定的Domino COM对象,使用早期绑定,我会非常喜欢。

    我确定2013年的两个词 注释9.0.1 fp9正确安装在我的Windows 7(x64)计算机上。在Word的VBA编辑器中,我确保启用了对“LotusDomino对象”(domobj.tlb)的引用。

    我知道创建一个notession对象有各种版本,我想我已经测试了它们。下面是“早期绑定”代码的一个示例:

    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
    

    在调试模式下运行此代码段I接收运行时错误429'Active X Component can't create the object'at line 3:

    Set sn = CreateObject("Lotus.NotesSession")
    

    我知道我过去也有类似的代码,但那是早期版本的注释。 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
    

    有人知道这里可能出什么问题吗?这可能是一个组合 不能 工作,不管什么原因?

    1 回复  |  直到 8 年前