0

私はこの問題で何日も立ち往生しています

ロータスノートの特定のメールボックスを読み、すべてのコンテンツを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)

空のメッセージボックスがポップアップ表示されます

4

3 に答える 3

3

GetEnvironmentString()は、notes.iniファイルを読み取ります。それがあなたが本当にやりたいことかどうかはわかりません。構文からすると、探しているメールボックスへの実際のパスのプレースホルダーとして「mail/mailbox」を使用していると思います。たとえば、あなたは本当に「mail/jsmith.nsf」のようなものからメールを読み込もうとしています。(私が間違っていて、実際にnotes.iniファイルを読んでメールファイルの場所を取得したい場合、問題は「mail/mailbox」がiniファイルエントリの有効なキーではないことです。 )。

私の次の仮定は、メールボックスが存在するDominoサーバーが「mailboxer」と呼ばれることです。これは、GetDatabase()の最初の引数に入力するものだからです。

私がこれらのことについて正しければ、あなたが必要としているのは

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

ここで、「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 が述べたように、VB コードが実行されるのと同じクライアント マシンに Notes クライアントがインストールされていることを確認する必要があります。また、nnotes.exe ファイルのあるフォルダーと notes.ini のあるフォルダーを確認する必要があります。ファイルは環境パスにあります。(そうでない場合、Notes.NotesSession オブジェクトのインスタンス化中に COM エラーが発生します。

これが役立つ場合、ここにいくつかのスターター コードがあります - テストされていませんが、大まかなガイドです... これは、Notes メールボックス データベース内のすべてのドキュメントをウォークスルーし、電子メール ドキュメント (フォーム フィールド = "Memo" を持つ) 以外はすべて無視し、一部を取得します。各メールのフィールド。

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 に答える