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
実行すると
イミディエイトウィンドウに
送信者
受信者
CC
BCC
タイトル
内容(メール本文)
が表示されます。
終わりに
今回は、メールをすべて取得するサンプルの紹介でしたが、VBAを使って様々なことが実現できます。
カスタマイズする際は、IBMの公式ページが役に立ちます。
IBM Knowledge Center
この記事を最初に執筆した時点ではNotesはIBMのものだったのですが、2019年6月末にインド企業のHCLテクノロジーズに売却されました。
そのため、今後はHCLのサイトを参考にされるのがよいかと思います。
HCL Notes/Domino | 製品 | HCL Software
私はLotus Scriptは未経験ですが、VBAの知識があれば、なんとなく理解できるかなぁ・・・と思います(人それぞれですが・・・)。IBM公式サイトには色々な情報がありますが、全部を理解する必要はありません。実際に業務を効率化するための知識はその中の一部です。このブログで少しずつ触れていければと思います。
ここまでお読みいただき、ありがとうございました。
関連記事
関連記事も少しずつ充実してきました!
VBAでNotesメールを作成・送信する_最も簡単なサンプル - 適材適所
VBAでNotesの特定のフォルダのメールを参照する - 適材適所