[C#] Outlookの予定表から予定を取得する

このページのタグ:[C#] [Outlook] [予定表]
Outlookの予定表にある予定をプログラムから取得する方法を紹介します。

準備

Visual Studio 2010でWinformアプリケーションを新規作成します。ソリューションエクスプローラで[参照設定]ノードを選択し右クリックでポップアップメニューを表示します。ポップアップメニューの[参照の追加]メニューをクリックします。


[参照の追加]ダイアログボックスが表示されます。[.NET]タブを選択し"Microsoft.Office.Interop.Outlook"コンポーネントを選択します。下図の例ではバージョン"14"とバージョン"12"がありますが、バージョン12は.NETの乱値無のv1.1用のため、バージョン"14"を用います。選択後[OK]ボタンをクリックします。


コード


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Office.Interop.Outlook;

namespace OutlookAccess
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      Microsoft.Office.Interop.Outlook.Application outlook
        = new Microsoft.Office.Interop.Outlook.Application();
      NameSpace ns = outlook.GetNamespace("MAPI");
      MAPIFolder oFolder = ns.GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
      textBox1.Text += oFolder.Name+"\r\n";

      Items oItems = oFolder.Items;
      AppointmentItem oAppoint = oItems.GetFirst();
      while (oAppoint != null) {
        textBox1.Text += oAppoint.Subject + "\r\n";
        textBox1.Text += oAppoint.Start.ToString("yyyy/MM/dd hh:mm:ss")+ "\r\n";
        textBox1.Text += oAppoint.End.ToString("yyyy/MM/dd hh:mm:ss") + "\r\n";
        textBox1.Text += "---\r\n";

        oAppoint = oItems.GetNext();
      }
    }
  }
}

解説

using Microsoft.Office.Interop.Outlook;
を記述してMicrosoft.Office.Interop.Outlook名前空間を参照可能にします。

Microsoft.Office.Interop.Outlook.Application outlook = new Microsoft.Office.Interop.Outlook.Application();
にてOutlookアプリケーションを新規作成します。

NameSpace ns = outlook.GetNamespace("MAPI");
にてOutlookの名前空間を取得します。現在のところサポートしている名前空間は"MAPI"のみですので、引数には"MAPI"を指定します。

MAPIFolder oFolder = ns.GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
MAPIFolderを取得します。今回は標準のフォルダを取得するのでGetDefaultFolder()メソッドを使います。取得するフォルダはスケジュールのフォルダですので引数にOlDefaultFolders.olFolderCalendarを与えます。

textBox1.Text += oFolder.Name+"\r\n";
フォルダ名をテキストボックスに表示します。

AppointmentItem oAppoint = oItems.GetFirst();
GetFirst()メソッドを用いて、フォルダにある最初の要素を取得します。スケジュールのフォルダですので、取り出される要素はAppointmentItemになります。

while (oAppoint != null) {
  textBox1.Text += oAppoint.Subject + "\r\n";
  textBox1.Text += oAppoint.Start.ToString("yyyy/MM/dd hh:mm:ss")+ "\r\n";
  textBox1.Text += oAppoint.End.ToString("yyyy/MM/dd hh:mm:ss") + "\r\n";
  textBox1.Text += "---\r\n";

  oAppoint = oItems.GetNext();
}
アイテムの内容をテキストボックスに表示します。今回は予定名と開始時間と終了時間をテキストボックスに表示します。要素を表示したのちGetNext()メソッドを用いて次の要素を取得します。要素がnullになるまで繰り返すことですべての予定表にあるすべての予定を取得できます。

実行結果

button1をクリックするとOutlookの予定表から予定を取得して表示します。


Outlookの予定表は下図の状態になっています。


登録日 :2011-06-28    最終更新日 :2014-09-30
このページのタグ:[C#] [Outlook] [予定表]
Japanese
プライバシー    iPentecについて
iPentec all rights reserverd. (ISDC)