適材適所

WindowsやPowerShellやネットワーク、IBMなどのシステム系の話など気になったことも載せているブログです。

VBAでNotesのタスク一覧を取得する簡単なサンプル

おいおい、今時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関連企業の回し者ではありあせん)

ここまでお読みいただき、ありがとうございました。

参考

HCLの公式ドキュメント