適材適所

PowerShellやVBAなどのプログラミングに関すること、キャリア、子育ての3本で書いていきます

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

VBA×Notesシリーズ

VBAでNoteメールの添付ファイルを保存する - 適材適所
VBAでNotesメールを作成・送信する_ファイル添付 - 適材適所
VBAでNotesメールを作成・送信する_CC/BCCの追加 - 適材適所
VBAでNotesメールを作成・送信する_最も簡単なサンプル - 適材適所
VBAでNotesカレンダーを取得する簡単なサンプル - 適材適所
VBAでNotesメールを取得する簡単なサンプル - 適材適所

環境

IBM Notes 9 Social Edition

Notesのタスクとは?

Notesには、地味ながらタスクを管理する機能があります。

知る人ぞ知る便利機能ですね。

カレンダー機能と合わせて使えるのでとっても便利です。

私も職場では、この機能を使ってタスク管理をしています。 https://www.amazon.co.jp/gp/product/4873113075/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=kurage05e-22&creative=1211&linkCode=as2&creativeASIN=4873113075&linkId=8f1b41eca336e4f93c9b4ba9145b2195

Notesのタスクには、件名、開始日、期日(終了予定日)、内容、添付ファイル、アラーム、個人orグループの区別(デフォルトは個人)等の項目があります。

大体の人は、件名、開始日、終了日とステータスくらいしか管理しないのではないかと思いますが・・・。

とにかく色々機能があってとっても便利!!

VBAでNotesのタスク一覧を作成する

VBAを使えば、タスクの一覧をExcelなどに書き出すことが可能です。

タスク機能自体がちょっと地味~~な昨日なので、しかも、それをVBAで取得するという、

本当に需要があるかどうかわからないような内容ですが、紹介していこうと思います。

例に漏れず、タスクも項目が多いので、タスクの項目の中でも最低限の項目の一覧を取得してみたいと思います。

タスクのビューは5種類?

タスクのビューは私の環境だと、次の5種類でした。

(タスク\グループ)

(タスク\カテゴリ別)

(タスク\完了)

(タスク\未完了)

(タスク\パーソナル)

コード

先ほどのビューを取得し、その中の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のタスク一覧を作成する方法を紹介しました。

こんなこともできるよ的な他愛のない内容ですが・・・。

何かの参考になれば・・・。

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

参考

IBM Knowledge Center タスク