VBAでNotesメールを取得する
仕事の中には「毎日、毎週、この作業やるの面倒だなぁ・・・。」というシーンが多々あります。そんな場面で役に立つのがVBAを使った自動化です。
VBAは敷居が低い分、ネット上には色々な情報があふれています。
しかし他のアプリケーションとの連携という視点だと、情報が少ないのが現状です。
ここでは自動化をメインとして語る(ことが多い)ブログなので、そのようなアプリケーション間の連携に纏わる情報をお伝えしたいと思います。
この記事ではVBAを使ってNotesメールを取得する方法を紹介します。
Notesは、グループウェアの先駆け的存在として、その根強い人気から(?)今でも使っている組織もあるのではないでしょうか?
チャットがこれだけ浸透したこの時代でも、まだまだメールを使う場面も少なくありません。
メールの件名をリスト化したいであるとか、メールの内容によってさらに別の業務に繋げるなど、チャットが台頭してきた今でもやっぱりメールはデスクワークに欠かせません。
というわけで、この記事ではVBAとNotesの連携を行う上で、土台となる簡単なサンプルとしてNoteメールの方法を取得する例を紹介したいと思います。
VBAでNotesメールを取得する簡単なサンプル
VBAを使ってNotesメールを取得する簡単なコードです。
このコードの実行の前には、事前に「Lotus Dimino Objects」の参照設定チェックが必要になります。
また、ご利用の環境に合わせて定数の設定を行ってください。
詳しい手順は↓の記事をご参考にしていただければ幸いです。
コードを実行すると、イミディエイトウィンドウに下記の情報が出力されます。
- 送信者
- 受信者
- CC
- BCC
- タイトル
- 内容(メール本文)
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
応用のヒント
VBAを使ってNotesメールを取得することができれば、プチRPAができます。
例えば、定期的にNotesメールを取得して、特定の新しいメールが届いていたら自動で返信メールを送信したり、受信メールの一覧を作成して、やりとりの証跡として保存したり、Notesの標準機能ではできないような検索条件でメールを検索したり・・・。
なんでNotesをVBAから扱えるの?
NotesはCOMインターフェースを備えてくれているためです。
COMとは、Component Object Modelの略で、平たく言えば外部から操作できるようなAPIです。
COMを使っているので、VBA以外のプログラミング言語からもNotesを扱うことができます。
例えばPowerShellを使ってNotesを操作することも可能です。
終わりに
今回は、VBAを使ってNotesメールを取得するサンプルの紹介でしたが、COMインターフェースのおかげで、VBAを使った様々なNotesの操作が実現できます。
Notesメールを取得する以外にもNotesカレンダーを取得したり、Notesメールを送信したり・・・Notesで日々行っているルーチンワークを軽減できるヒントがたくさんあります。
何かと下火なNotesですが、外貌からの操作性という意味ではピカイチな性能なので、ぜひ他のNotes操作関連の記事 も読んでいただいて、自動化の参考にして頂ければと思います。
というわけで、ここまでお読みいただき、ありがとうございました。