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]
スポンサーリンク


