【问题标题】:lotus notes to VBA莲花笔记到VBA
【发布时间】:2013-02-20 10:26:05
【问题描述】:

我被这个问题困扰了好几天

我必须阅读 lotus notes 中的特定邮箱并将所有内容放入 Excel 电子表格

但到目前为止,我只能阅读默认收件箱,无法切换到其他邮箱。我真的是 VBA 新手,谁能帮我解决这个问题

这是我正在使用的代码

Set NSession = CreateObject("Notes.NotesSession")
   'get the name of the mailfile of the current user
DbLocation = NSession.GETENVIRONMENTSTRING("mail/mailbox", True)

'Get the notesdatabase for the mail.
Set NMailDb = NSession.GETDATABASE("mailboxer", DbLocation)
MsgBox (DbLocation)

我得到一个空的消息框弹出

【问题讨论】:

    标签: vba lotus-notes


    【解决方案1】:

    GetEnvironmentString() 读取 notes.ini 文件。我不确定那是你真正想做的事情。仅从语法来看,我认为您使用“mail/mailbox”作为您要查找的邮箱的实际路径的占位符。例如,您实际上是在尝试从“mail/jsmith.nsf”之类的内容中读取邮件。 (如果我错了,并且您确实想阅读 notes.ini 文件以获取邮件文件的位置,那么您的问题是“邮件/邮箱”不是 ini 文件条目的有效键。 )

    我的下一个假设是邮箱所在的 Domino 服务器称为“mailboxer”,因为这是您在 GetDatabase() 的第一个参数中放入的内容。

    如果我对这些事情的看法是正确的,那么你需要的是

    Set NMailDb = NSession.GETDATABASE("mailboxer", "mail/mailbox") 
    

    其中“mail/mailbox”被替换为您尝试打开的邮箱的实际路径。

    【讨论】:

      【解决方案2】:

      一些想法:

      • 如果您不必与 Notes UI 交互,请使用 Lotus.NotesSession(Lotus.NotesSession 基于 COM,而 Notes.NotesSession 基于 OLE)
      • 确保运行 VBA 应用程序的工作站上的 Notes 客户端用户具有打开和读取邮箱所需的权限

      【讨论】:

        【解决方案3】:

        正如 D. Bugger 所说,您需要确保将 Notes 客户端安装在将运行 VB 代码的同一台客户端计算机上,并且需要确保包含 nnotes.exe 文件的文件夹和包含notes.ini 文件位于您的环境路径中。 (如果没有,在实例化 Notes.NotesSession 对象时会出现 COM 错误。

        如果这有帮助,这里有一些初始代码 - 未经测试,但只是一个粗略的指南...这将遍历 Notes 邮箱数据库中的所有文档,忽略除电子邮件文档(具有表单字段 =“备忘录”)之外的任何内容并从每封电子邮件中获取一些字段。

        Public Sub exportNotesMail(MailServer$, MailDBPath$)
            Dim mailDb As Object, doc As Object, alldocs As Object, Session As Object
            Set Session = CreateObject("Notes.NotesSession")
            Set mailDb = Session.GETDATABASE(MailServer, MailDbPath$)
            If mailDb.IsOpen = False Then mailDb.OPENMAIL
            Set alldocs = mailDb.AllDocuments
            Set doc = alldocs.GetFirstDocument
            while not (doc is nothing)
                If doc.GetItemValue("Form")(0) = "Memo" Then
                    thisSubject = doc.getItemValue("Subject")(0)
                    thisFrom = doc.getItemValue("From")(0)
                    ' get more field values
                    ' Export to Excel or wherever
                End If
                Set doc = alldocs.GetNextDocument(doc)
            Next i
        
            ' done
        End Sub
        
        call exportNotesMail ("MyServer", "mail\myMailFile.nsf")
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多