Digital_Neko

フリーランスプログラマー

Excel VBA Outlook操作 メールの件名を取得する

こんにちはOnoです。今回はExcel VBAでのOutlook操作です。Outlookのフォルダを選択し、メールの件名を全件取得するマクロです。まず初めに、「ツール」→「参照設定」より
「Microsoft Outlook 15.0 Object Library」にチェックを入れます。15.0のところはExcelの
バージョンによって違うかもしれません。

参照設定

実際のサンプルプログラムは下記となります。

まず、Outlook型の変数NewTaskを宣言し、New Outlook.ApplicationとしてOutlookの
インスタンスを生成します。インスタンスを新たに生成しているので、Outlookを起動して
いなくても、Outlookにアクセスできます。

またOutlookのデータにアクセスするためには、NameSpaceオブジェクトを取得する
必要があります。使用できるデータソースはMAPIのみとなります。
GetNameSpace(MAPI)とすることで、全てのOutlookデータへアクセスが可能となります。

ここまで設定が終わった段階で、8行目でFolder型の変数myBoxを宣言します。そして、
Set myBox = myNameSpace.PickFolderとして、Outlookの選択したフォルダーを変数に
セットします。

さらに、16行目と17行目で、選択したフォルダに入っているアイテムのコレクションを取得
します。そしてFor Each構文を用いメールを一件ずつ取得します。この時注意点があります。
19行目で、コレクションから取り出される物を一時的に格納する変数を、Object型にしています。
これは、取り出される物がメールだけとは限らないためです。予定表フォルダーへの変更
などのMeetingItemオブジェクトなどが取り出される可能性もあります。

そのためObject型にすることによって、エラーで止まる事を防ぎます。ここまで来たら最後に、
21行〜23行のFor Each構文で、イミディエイトウインドウに選択したフォルダ内の全ての
件名を表示します。

さて今回は、Excel VBAによるOutlook操作を紹介しました。皆様の参考になれば幸いです。