【Outlook VBA】エクセルワークシートのタスク一覧をOutlookのタスクに登録する方法


taskList,reg,eyecatch

皆様こんにちは、ノグチです。

前回記事では、Outlook VBAでタスクを登録する方法をご紹介しました。

Outlook VBAでタスクを登録する最も簡単なプログラム
Outlookのタスクを、VBAで登録する方法をご紹介しています。やらないといけないこと、やりたいことをメモや付箋に書いておくのもいいですが、Outlookのタスクに登録しておけば、期限の手前でアラームを鳴らしてくれたり、タスクをやったか、やっていないかまで管理することができて便利です。

今回はその応用編として、エクセルワークシートにリストアップしたタスクの一覧を、VBAでまとめてOutlookのタスクに登録する方法をご紹介していきます!

スポンサーリンク

前回のおさらい

前回記事でご紹介した、1件のタスクを登録するコードはコチラでした。

TaskItemオブジェクトのプロパティに、コード内で直接タスクに登録したい値をセットしていました。

Sub RegTask()
Dim objTask As TaskItem

Set objTask = CreateItem(olTaskItem)

With objTask
    .Subject = "やらねばタスク"
    .StartDate = "2018/10/1"
    .DueDate = "2018/10/10"
    .ReminderSet = True
    .ReminderTime = "2018/10/8 12:00"
    .Body = "住民票と印鑑証明取得@xxx区役所"
    
    .save
End With
    
End Sub

しかしこのままのコードでは1件ずつしかタスクが登録できませんね。

エクセルワークシートの内容によって複数のタスクをまとめて登録できるように、こちらのコードに色々書き加えていきましょう!

MicroSoft Excel xx.x Object Libraryの参照設定

まずは、Outlook VBAからExcelを操作できるように、MicroSoft Excel xx.x Object Libraryの参照設定をしておきましょう。

設定については下記記事で紹介していますので、こちらをご覧くださいね。

【Outlook VBA】エクセルワークシートの内容で予定登録する方法
Outlookの予定表は便利ですが、頻繁に予定を登録するのは面倒ですよね。本記事では、Outlook VBAからエクセル操作のための参照設定の方法と、エクセルワークシートに一覧化した内容でOutlookの予定を登録する方法をご紹介しています。

タスク一覧記入用のワークシートを用意

Outlookのタスクに登録したいタスクを、エクセルのワークシートに記入しておきましょう。

今回は、こんな感じのリストを用意しました。

エクセル,タスク一覧

この内容を、纏めてタスクに登録できるように、おさらいのコードに追加していきましょう。

エクセルワークシートの一覧からタスクを登録するコードを記述

Excelのオブジェクト達を取得する

MicroSoft Excel xx.x Object Libraryの参照設定の項でご紹介している記事でも同様にご紹介していますが、まずはOutlook VBAからExcelを操作できるように、ワークブックオブジェクトとワークシートオブジェクトを取得しましょう。

まずは、エクセルのアプリケーションオブジェクトを取得する為の変数です。

Dim objExcel As Excel.Application

そして、各オブジェクト用の変数を宣言するのでしたね。

Dim wb As Excel.Application.Workbook
Dim ws As Excel.Application.Worksheet

お次は宣言した変数で、各オブジェクトを取得しましょう。

このように。

Set objExcel = New Excel.Application
Set wb = objExcel.Workbooks.Open(タスク一覧のエクセルファイルパス)
Set ws = wb.Worksheets("タスク一覧")

これで、エクセルのオブジェクト達の取得はOKです。

タスク登録処理をループ文で挟み込む

では、Outlook VBAからエクセルが操作できるようになったところで、お次はタスク登録の部分をループで挟んじゃいます。

そして、TaskItemオブジェクトのプロパティにセットする値を、エクセルワークシートから取得するように変えて…

Sub TaskRegWithExcel()

Dim objExcel As Excel.Application
Dim wb As Workbook
Dim ws As Worksheet
Dim strFile As String
Dim i As Long

Dim objTask As TaskItem

strFile = "C:\Users\Desktop\タスクリスト.xlsx"

Set objExcel = New Excel.Application
Set wb = objExcel.Workbooks.Open(strFile)
Set ws = wb.Worksheets("タスク一覧")

For i = 2 To 4
    Set objTask = CreateItem(olTaskItem)

    With objTask
        .Subject = ws.Cells(i, 1).Value  'タスクのタイトル
        .StartDate = ws.Cells(i, 2).Value       '開始日
        .DueDate = ws.Cells(i, 3).Value         '期限
        .ReminderSet = ws.Cells(i, 4).Value     'アラームを鳴らすかどうか
        .ReminderTime = ws.Cells(i, 5).Value    'アラームを鳴らす時間
        .Body = ws.Cells(i, 6).Value            'タスク内容
        
        .Save
    End With
Next i

End Sub

はい、おさらいのコードにループ文を入れて、エクセルワークシートの参照を追加しただけです。

超単純。

エクセルワークシートのタスク一覧をOutlookのタスクに登録する

上のコードを実行すると、この通りOutlookのタスクにちゃんと登録されます。

登録,タスク,Outlook

心配性のあなたへ…Displayメソッドで登録前に内容をチェック

タスクの内容がちゃんとワークシートに記入した通りになっているのか不安…という方には、TaskItemオブジェクトのDisplayメソッドで登録直前のタスクの内容をチェックすることができます。

TaskItemオブジェクト.Display

これを、Saveメソッドの代わりに仕込んでおけば、タスク登録の画面で自分が「保存して閉じる」をクリックしない限り、タスクに登録されません。

Displayメソッドを実行すると、こんな感じでタスクの登録直前の状態で内容をチェックできます。

登録内容,Outlook,タスク

但し、目視でタスクの内容をチェックしてから登録したい!という目的でDisplayメソッドを使う場合は、DisplayメソッドはSaveメソッドと置き換えて使うようにしましょう。

Displayメソッドの後にSaveメソッドが記述されていると、折角タスクの登録直前の画面が開いてもその直後にSaveメソッドが実行されてしまうので、Displayメソッドを挟んだ意味がなくなってしまいますよ。

最後に

今回は、エクセルワークシートにリストアップしたタスクの一覧を、VBAでまとめてOutlookのタスクに登録する方法をご紹介しました。

今回の方法なら、思いついたそばからエクセルのワークシートにタスクを記入しておいて、例えば一日の終わりにマクロ実行してタスクを登録しておく、ということもできますね。

また、一日の仕事を終えて退勤する前に、「明日のやらねば」をタスクとして登録しておくこともできますよ。

あと、タスクって実は宛先にメールアドレスを指定することで、依頼として登録することもできるんです。

例えば、職場に新人さんが入ってきたときに、依頼で纏めてやってほしいことを登録しておいてあげると便利かもしれませんね。

それでは、最後までお読み頂きありがとうございました!

連載目次:Outlook VBAでタスクを登録してみよう

Outlook VBAで基本的なタスクを登録する方法と、応用編としてエクセルワークシートに書き出した複数のタスクを、一括で登録する方法をご紹介していきます。

  1. Outlook VBAでタスクを登録する最も簡単なプログラム
  2. 【Outlook VBA】エクセルワークシートのタスク一覧をOutlookのタスクに登録する方法

タイトルとURLをコピーしました