2013-02-14 215 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")