非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

C#からOutlookスケジュールを読み込む方法

   

C#からOutlook上にたてたスケジュールを読み込む方法です。

うちの会社は各自のスケジュールをOutlookに設定して共有するようにしています。自分のスケジュールを確認するためにいちいちOutlookを起動しなきゃならず、もっとサクッと見れないかと思ったところ、C#で閲覧ソフトを作れることを知りました。

[ad#top-1]

Outlookライブラリの入手

Microsoft.Office.Interop.Outlookライブラリを使います。

このライブラリはダウンロード必要なのですが、以下の記事を参考にダウンロードしてください。

 

この記事はMicrosoft.Office.Interop.Excel ライブラリの導入法ですが、解凍した同じフォルダ内にMicrosoft.Office.Interop.Outlook ライブラリもあります。

 

まずは完成したプログラムの動き

Outlookには以下のようなスケジュールを入力しています。

 

このスケジュールをC#で取得し、以下のようにテキストボックスに表示させます。「読込」ボタンを押すと右画面のようにスケジュールが確認できます。

 

このソフトであれば、いちいちOutlookを起動せずともスケジュールを確認できます。

 

ソースコード

以下がソースコード全文です。これをコピペしてコンパイルすれば上で紹介したものができます。

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Collections.Generic;
using Outlook = Microsoft.Office.Interop.Outlook;

class outlookTest{
  static void Main(string[] args){
    Application.Run(new MainWindow(args));
  }
}

class MainWindow : Form{
  private TextBox textBox;

  public MainWindow(string[] args){
    this.StartPosition = FormStartPosition.CenterScreen;
    this.Width = 310;
    this.Height =400;
    this.Text = "Outlook Schedule";

    textBox = new TextBox(){
      Location = new Point(5, 5),
      Size = new Size(300, 300),
      ScrollBars = ScrollBars.Vertical,
      Multiline = true,
      Parent=this,
    };

    Button btn1 = new Button(){
      Text = "読込",
      Location = new Point(5, 320),
      Parent = this,
    };
    btn1.Click += new EventHandler(BtnClicked);
  }

  private void BtnClicked(object sender, EventArgs e){
    Outlook.Application outlook = new Outlook.Application();
    Outlook.NameSpace ns = outlook.GetNamespace("MAPI");
    Outlook.MAPIFolder folder = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar);

    Outlook.Items items = folder.Items;
    items = items.Restrict("([Start] > '2018/04/01 0:00') And ([End] < '2018/04/07 0:00')");
    Outlook.AppointmentItem appoint = (Outlook.AppointmentItem)items.GetFirst();

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

      appoint = (Outlook.AppointmentItem)items.GetNext();
    }
  }
}
 

 

コンパイルにはMicrosoft.Office.Interop.Outlookライブラリを参照する必要があります。csc.exeを使う場合は以下のようにしてください。

csc.exe /platform:x86 /target:winexe /reference:Microsoft.Office.Interop.Outlook.dll outlookTest.cs
 

 

今回のサンプルプログラムは日付を固定にしています。実際にはここをカスタマイズできるようにした方が良いでしょう。今回はあくまで解説用に日付固定にしておきました。

items = items.Restrict("([Start] > '2018/04/01 0:00') And ([End] < '2018/04/07 0:00')");
 

 

[ad#ad-1]

スポンサーリンク

 - C#応用編, Outlook