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