2013-02-14 407 views
0

我坚持这个问题好几天Lotus Notes中VBA

我要读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坡平了

回答

3

GetEnvironmentString()读取M个notes.ini文件。我不确定那是你真正想做的。只是从语法上,我认为你使用“邮件/邮箱”作为你正在寻找邮箱的实际路径的占位符。例如,你真的想从诸如“mail/jsmith.nsf”之类的东西中读取邮件。 (如果我错了,并且确实希望阅读notes.ini文件以获取邮件文件的位置,那么问题在于“邮件/邮箱”不是ini文件条目的有效密钥。 )

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

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

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

其中“邮件/邮箱”替换为实际的路径,你正在试图打开邮箱。

1

的几点思考:

  • 使用Lotus.NotesSession如果你没有使用Notes UI交互(基于Lotus.NotesSession COM,而Notes.NotesSession基于OLE)
  • 化妆确保运行VBA应用程序的工作站上的Notes客户端的用户具有打开和阅读邮箱的权限
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")