適材適所

パソコン作業の自動化・効率化のための情報を発信するブログ(VBA,PowerShellなど)

VBAでNotesメールを取得する簡単なサンプル

VBAでNotesメールを取得する

仕事の中には「毎日、毎週、この作業やるの面倒だなぁ・・・。」というシーンが多々あります。そんな場面で役に立つのがVBAを使った自動化です。

VBAは敷居が低い分、ネット上には色々な情報があふれています。

しかし他のアプリケーションとの連携という視点だと、情報が少ないのが現状です。

ここでは自動化をメインとして語るブログなので、そのような情報をお伝えしたいと思います。

今回はVBAでNotesメールを取得するサンプルを紹介します。

Notesは、グループウェアの先駆け的存在として、(今でも)使われている組織もあるかと思います。

ここでは、Notesとの連携を行う上で、土台となる簡単なサンプルを備忘録も兼ねて紹介します。

コードの実行には事前に「Lotus Dimino Objects」の参照設定チェックを付けておきます。

コード

Sub printNotesMailList()
    Const PASSWORD As String = "(環境に合わせて設定)"
    Const SERVER As String = "(環境に合わせて設定)"
    Const NOTES_FILE As String = "(環境に合わせて設定).nsf"
    'セッションを確立
    Dim notesSession As notesSession: Set notesSession = New notesSession
    notesSession.Initialize PASSWORD
    'Notesのデータベースを取得
    Dim notesDB As NotesDatabase: Set notesDB = notesSession.GetDatabase(SERVER, NOTES_FILE)
    'Notesデータベースから全ての文書を取得する
    Dim notesDocs As NotesDocumentCollection: Set notesDocs = notesDB.AllDocuments
    '最初の文書を取得
    Dim notesDoc As NotesDocument: Set notesDoc = notesDocs.GetFirstDocument
    
    '全ての文書にアクセスする
    Do Until (notesDoc Is Nothing)
        Dim subject As String: subject = notesDoc.GetItemValue("Subject")(0)
        Dim body As String: body = notesDoc.GetItemValue("Body")(0)
        Dim from As String: from = notesDoc.GetItemValue("From")(0)
        Dim cc As String: cc = notesDoc.GetItemValue("CopyTo")(0)
        Dim bcc As String: bcc = notesDoc.GetItemValue("BlindCopyTo")(0)
        Dim sendTo As String: sendTo = notesDoc.GetItemValue("SendTo")(0)
        
        Debug.Print "送信者:" & from
        Debug.Print "受信者:" & sendTo
        Debug.Print "CC:" & cc
        Debug.Print "BCC:" & bcc
        Debug.Print "タイトル:" & subject
        Debug.Print "内容:" & body
        Debug.Print "---------------------------------"
        '次の文書を取得する
        Set notesDoc = notesDocs.GetNextDocument(notesDoc)
    Loop
    
End Sub

Notesの作業を自動化するにあたり

今回は、メールをすべて取得するサンプルの紹介でしたが、VBAを使って様々なことが実現できます。
カスタマイズする際は、IBMの公式ページが役に立ちます。
 IBM Knowledge Center

私はLotus Scriptは未経験ですが、VBAの知識があれば、なんとなく理解できるかなぁ・・・と思います(人それぞれですが・・・)。IBM公式サイトには色々な情報がありますが、全部を理解する必要はありません。実際に業務を効率化するための知識はその中の一部です。このブログで少しずつ触れていければと思います。

関連記事

www.tekizai.net

www.tekizai.net