|
.NET TIPS
Outlook 2003/2007に仕事(ToDo)を追加するには?[C#、VB]
デジタルアドバンテージ 岸本 真二郎
2008/08/14 |
|
|
COM相互運用の機能を利用すれば、.NETのアプリケーションからOfficeアプリケーションを操作することが可能だ。これはOfficeが提供しているCOMコンポーネントの機能を呼び出すことにより実現されている。そしてこの機能は、WordやExcelだけでなく、Outlookに対しても利用可能だ。ここではOutlookの「仕事(ToDo)」の追加をC#やVBのアプリケーションから行う例を紹介する。
参照の追加
まずOfficeが提供するCOMコンポーネントが利用できるように、参照の追加を行う。Visual Studioでプロジェクトを新規作成したら、メニューの[プロジェクト]−[参照の追加]を選択して[参照の追加]ダイアログを開き、[COM]タブで「Microsoft Outlook 12.0 Object Library」(Outlook 2007の場合)を追加する。
|
[参照の追加]ダイアログ |
|
Outlookに「仕事」を追加
Outlookを操作するには、まずOutlookのインスタンスを作成する。次に、ログオン処理が必要になる。ログオンを行うメソッドも公開されているので、これをそのまま呼び出すのだが、その際の引数としてアカウント情報にnull(VBではNothing)を指定すると、現在Windowsにログオンしているユーザーのアカウント情報が使用される。
ToDoの追加は、Outlookのインスタンスからタスク・アイテムを新規作成し、ここに件名や内容、期限、アラームを鳴らすかどうかなどの設定を行うことで実現できる。作成したタスク・アイテムは、それを保存することで、ToDoが登録される。
以下のサンプル・コードでは、Outlook200Xというクラスを作成し、その中にToDoを作成するAddTaskItemメソッドを定義している。このメソッドのパラメータでは、題名と内容のみを設定するようにしているが、必要に応じて、アラームの有無、期限なども指定できる。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop;
using Microsoft.Office.Interop.Outlook;
namespace OutlookToDo
{
class Program
{
static void Main( string[] args )
{
Outlook200X oc = new Outlook200X();
oc.AddTaskItem( "題名3", "test"+DateTime.Now.ToString());
}
}
public class Outlook200X
{
private Microsoft.Office.Interop.Outlook.Application oApp;
private NameSpace oNameSpace;
public Outlook200X()
{
oApp = new Microsoft.Office.Interop.Outlook.Application();
oNameSpace = oApp.GetNamespace("MAPI");
oNameSpace.Logon(null, null, true, true);
}
public void AddTaskItem( string subject, string sBody )
{
// タスク・アイテムの作成
_TaskItem oTask =
(_TaskItem)oApp.CreateItem(OlItemType.olTaskItem);
try {
oTask.Subject = subject; // 件名
oTask.Body = sBody; // 本文
oTask.ReminderSet = true; // アラーム
oTask.ReminderTime = DateTime.Now.Add(
new System.TimeSpan(0, 0, 2, 0, 0)); // アラームを鳴らす
oTask.DueDate = DateTime.Now.Add(
new System.TimeSpan(1, 0, 0, 0, 0)); // 期限
// 保存してクローズ
oTask.Close(OlInspectorClose.olSave);
oNameSpace.Logoff();
} catch(System.Exception ex) {
Console.WriteLine(ex.Message);
} finally {
Marshal.ReleaseComObject(oTask);
Marshal.ReleaseComObject(oNameSpace);
Marshal.ReleaseComObject(oApp);
}
}
}
}
|
Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop.Outlook
Imports System.Runtime.InteropServices
Module Module1
Sub Main()
Dim oc As Outlook200X = New Outlook200X()
oc.AddTaskItem("題名3", "test" + DateTime.Now.ToString())
End Sub
End Module
Public Class Outlook200X
Private oApp As Microsoft.Office.Interop.Outlook.Application
Private oNameSpace As [NameSpace]
Public Sub New()
oApp = New Microsoft.Office.Interop.Outlook.Application()
oNameSpace = oApp.GetNamespace("MAPI")
oNameSpace.Logon(Nothing, Nothing, True, True)
End Sub
Public Sub AddTaskItem(ByVal subject As String, ByVal sBody As String)
' タスク・アイテムの作成
Dim oTask As _TaskItem = DirectCast(oApp.CreateItem( _
OlItemType.olTaskItem), _TaskItem)
Try
oTask.Subject = subject ' 件名
oTask.Body = sBody ' 本文
oTask.ReminderSet = True ' アラーム
oTask.ReminderTime = DateTime.Now.Add( _
New System.TimeSpan(0, 0, 2, 0, 0)) ' アラームを鳴らす
oTask.DueDate = DateTime.Now.Add( _
New System.TimeSpan(1, 0, 0, 0, 0)) ' 期限
' 保存してクローズ
oTask.Close(OlInspectorClose.olSave)
oNameSpace.Logoff()
Catch ex As System.Exception
Console.WriteLine(ex.Message)
Finally
Marshal.ReleaseComObject(oTask)
Marshal.ReleaseComObject(oNameSpace)
Marshal.ReleaseComObject(oApp)
End Try
End Sub
End Class
|
|
Outlookに「仕事」を追加するサンプル・コード(上:C#、下:VB) |
上記のコードにより追加されたToDoの内容は次のようになる。
|
プログラムから追加されたToDo |
|
以上のように、Officeアプリケーションは比較的簡単にC#やVBから操作できる。
利用可能バージョン:.NET Framework 2.0以降
カテゴリ:クラス・ライブラリ 処理対象:COMコンポーネント
使用ライブラリ:Application(Microsoft.Office.Interop.Outlook名前空間)
|
|
generated by
|
|
Insider.NET 記事ランキング
本日
月間