おいおい、今時Notesって・・・
なんて思っても、なかなか抜け出せないのがNotes。
しぶとく生き残っています。
今回はそんなNotesの、機能の一つ、「タスク」をVBAを使って取得してみたいと思います。
VBA×Notesシリーズ
VBAでNoteメールの添付ファイルを保存する - 適材適所 VBAでNotesメールを作成・送信する_ファイル添付 - 適材適所 VBAでNotesメールを作成・送信する_CC/BCCの追加 - 適材適所 VBAでNotesメールを作成・送信する_最も簡単なサンプル - 適材適所 VBAでNotesカレンダーを取得する簡単なサンプル - 適材適所 VBAでNotesメールを取得する簡単なサンプル - 適材適所
環境
IBM Notes 9 Social Edition
Notesのタスクとは?
Notesには、色々な機能があります。
その中でも地味ながら実はタスクを管理する機能があります。
知る人ぞ知る便利機能ですね。
といっても、こんな超マイナーな内容を記事にしているここまでたどり着いたあなたはきっとご存知のことかと思います。
Notesのカレンダー機能と合わせて使えるので実はとっても便利だったりします。
Notesのタスクには、
- 件名
- 開始日
- 期日(終了予定日)
- 内容
- 添付ファイル
- アラーム
- 個人orグループの区別(デフォルトは個人)
等の項目があります。
件名、開始日、終了日とステータスくらい管理しておけば大体済んでしまいますが・・・とにかく色々機能があってとっても便利!!
VBAでNotesのタスク一覧を作成する
VBAを使えばNotesへアクセスし、タスクを取得することができます。
そして、取得したタスクの一覧をExcelなどに書き出すことが可能です。
タスク機能自体がちょっと地味~~な機能であるこに加え、それをVBAで取得するという、ニッチ過ぎる内容ですが、紹介していこうと思います。
タスクのビューは5種類?
先ほども書いたように、タスクには項目が多いので、その項目の中でも役に立ちそうな項目の一覧を取得してみたいと思います。
Notes関連のオブジェクトにはビューという考え方があり、Windowsで言うところのフォルダ的なものです。
アクセスするビューによって取得できるタスクが変わってくるので注意が必要です。
私の環境だと、タスクのビューは次の5種類でした。
- (タスク\グループ)
- (タスク\カテゴリ別)
- (タスク\完了)
- (タスク\未完了)
- (タスク\パーソナル)
流れとしては、これらのビューにある各Documentを取得します。
ここでいうDocumentはタスクのことです。
Notesの個々のオブジェクトはDocumentという単位で構成されています。
今回紹介するコードでは、「タスク」という名前のついたビューを全て対象としてタスクを取得することとします。
コード
※Louts Domino Objectへの参照設定を行ってから実行する必要があります。
Sub NotesTaskList() Const PASSWORD As String = "(Input your Password)" Const SERVER As String = "(Input your Server)" Const NOTES_FILE As String = "(Input your Notes Mail File)" 'セッションを確立 Dim notesSession As notesSession: Set notesSession = New notesSession notesSession.Initialize PASSWORD 'Notesのデータベースを取得 Dim notesDB As NotesDatabase: Set notesDB = notesSession.GetDatabase(SERVER, NOTES_FILE) 'カレンダーViewの取得 Dim view As notesView Dim i As Long Dim notesDoc As NotesDocument Dim notesView As notesView Dim writeRow As Long: writeRow = 2 Cells(1, 1) = "View" Cells(1, 2) = "件名" Cells(1, 3) = "開始日 " Cells(1, 4) = "終了日" Cells(1, 5) = "内容" Cells(1, 6) = "ステータス" For i = 0 To UBound(notesDB.views) If notesDB.views(i) Like "*タスク*" Then Cells(writeRow, 1) = notesDB.views(i).Name Set notesView = notesDB.views(i) Set notesDoc = notesView.GetFirstDocument Do Until notesDoc Is Nothing Cells(writeRow, 2) = notesDoc.GetItemValue("Subject")(0) Cells(writeRow, 3) = notesDoc.GetItemValue("StartDateTime")(0) Cells(writeRow, 4) = notesDoc.GetItemValue("EndDateTime")(0) Cells(writeRow, 5) = notesDoc.GetItemValue("Body")(0) '進行中:1/開始前:2/完了:9 Cells(writeRow, 6) = notesDoc.GetItemValue("DueState")(0) writeRow = writeRow + 1 Set notesDoc = notesView.GetNextDocument(notesDoc) Loop End If Next i End Sub
終わりに
VBAでNotesのタスク一覧を作成するコードを紹介してみました。
今更Notesですが、せっかく使っているアプリなら、使い倒した方がお得ですよ!!
これを機に、Notesのタスクを使ってもらい、さらにVBAで一覧化してみるといいですね!!(私はNotes関連企業の回し者ではありあせん)
ここまでお読みいただき、ありがとうございました。