0

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

我必须阅读 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)

我弹出一个空的 msgbox

4

3 回答 3

3

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

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

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

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

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

于 2013-02-15T02:48:04.413 回答
1

一些想法:

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

正如 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")
于 2013-02-20T02:26:05.227 回答