ExcelとOutlook連携パート5 【Excelの表からタスクへ自動入力】



The following two tabs change content below.
アバター

taka

あることがキッカケでVBAを独学で勉強しました、今ではブログを通してVBAでできることを解説しつつ、VBAや他の言語の勉強、ブログ運営の勉強をしています(^^♪

どうも、taka(@takabou63)です(^^♪

今回は「ExcelとOutlookの連携」のパート5です!

前回ご紹介してきたのは「予定表」のお話でしたが、今回は「タスク」のお話です!

タスク管理というのは仕事の作業の進捗表というようなもののようです(*_*;

私のような中小企業の一般事務の平社員では使わないもの?かもしれません・・・単に私が必要ないだけ?

というわけで、前回に引き続きExcelの表からタスクに登録するプログラムをご紹介していきます!

前回の記事:ExcelとOutlook連携パート4 【Excelの表から予定表へ自動入力】

予定表の元となるExcelの表を準備

前回同様表を簡単に用意してしまいましょう!

今回用意した項目は

  1. タスク名
  2. タスク内容
  3. 開始日
  4. 終了日
  5. 進捗

の5つです。

【Excelの表からタスクへ自動入力】サンプルコード

ではサンプルコードをご紹介します。

コードの説明はコメント欄にて書いてあります!ちなみに動作後はこんな感じです(*_*;

私人使用していないのでこれでいいのか疑問なのですが、もしよろしければ参考までに・・・

参考サイト:MSDN:TaskItem プロパティ (Microsoft)

Sub sample()

Dim i As Long
Dim oApp As Outlook.Application
Dim myNameSpace As Outlook.Namespace
Dim myFolder As Outlook.Folder

Set oApp = CreateObject("Outlook.Application")
Set myNameSpace = oApp.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(13) '規定のフォルダーの指定:9 は予定表・6は受信トレイなので今回は9を指定
 
    myFolder.Display 'Outlookを表示
    oApp.ActiveWindow.WindowState = 2 'ウィンドウサイズの指定
Dim title As String 'タスクのタイトル
Dim Contents As String 'タスクの内容
Dim Start As String 'タスクの開始日
Dim ed As String 'タスクの終了日
Dim proses As String 'タスクの進捗状況

i = 2
Do Until Cells(i, 1).Value = "" '表が終わるまでループ
'Excelの表のデータを取得
title = Cells(i, 1)
Contents = Cells(i, 2)
Start = Cells(i, 3).Text
ed = Cells(i, 4).Text
proses = Cells(i, 5).Text
priority = Cells(i, 6).Text
'予定表の処理
Dim TsItem As Outlook.TaskItem
Set TsItem = oApp.CreateItem(3) 'タスク作成
TsItem.Display '編集画面表示

TsItem.Subject = title
TsItem.Body = place
TsItem.StartDate = Start
TsItem.DueDate = ed
Select Case priority
    Case "延期"
        TsItem.Status = olTaskDeferred
    Case "進捗中"
        TsItem.Status = olTaskInProgress
    Case "完了"
        TsItem.Status = olTaskComplete
    Case "待機中"
        TsItem.Status = olTaskWaiting
    Case "未開始"
        TsItem.Status = olTaskNotStarted
End Select


'Subject=タスクの名前
'Body=タスクの内容
'StartDate=タスクの開始の日時
'DueDate=予定終了の日時
'Status=進捗状況、進捗状況は以下の定数で指定↓
'olTaskComplete 仕事は完了しています。
'olTaskDeferred 仕事は延期されています。
'olTaskInProgress 仕事は作業中です。
'olTaskNotStarted 仕事はまだ開始していません。
'olTaskWaiting 仕事は待機中です。
'----------------------------------------
TsItem.Close 0
i = i + 1
Loop '表の予定がなくなるまで繰り返し

Set myFolder = Nothing  'プロシージャー終了時に開放されるのは知っているよ!でも一応(笑)
Set myNameSpace = Nothing
Set oApp = Nothing
End Sub

 

フォロー・チャンネル登録お願いします

VBA以外についてのブログはこちら↓

https://yb-log.com/

■Twitterフォロー

■YouTubeチャンネル登録

ファイルやコードの利用、WEBサイトの利用について

サンプルコードなどは当サイトの免責事項をよくお読みになってからお使いください。

Sponsored Link

 

WordPressでブログを始めるなら

WordPress簡単インストール&安心の安定性

レンタルサーバー Xserver

2 件のコメント

  • 有益な情報をいつもありがとうございます!

    こちらに書かれているコードをアウトルックで実行すると以下のようにエラーが出ました。
    どのように対応すればよいか教えて頂ければ幸いです。
    エラー
    Cellsメソッドは失敗しました:`_Global`オブジェクト

    • ハリー様
      コメントありがとうございます。
      こちらのコードはExcelからoutlookを操作することを想定しております。
      おそらくoutlookではエラーになってしまうと思います。

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です