このページでわかること
Outlookを立ち上げてメールを確認する画面を開くことができます。
Outlookが既に起動しているかどうか確認することができます。
覚えること
- NamespaceとGetNamespaceのお決まり構文
- getdefaultfolderの使い方:Outlookの内、受信メールや予定表など何を扱うか
- Explore.countの使い方:Outlookが何個開いているか
こんにちはhokkyokunです。
Outlookを本格的に扱っていきます。
準備がまだという方いらっしゃいましたら、こちらを先にご覧ください。
今回はメールを立ち上げてみます。
そして一度立ち上がっていたら、処理はしないようにする方法もご紹介します。
NamespaceとGetNamespaceのお決まり構文 (コピペOK)
お決まりの文です。
とりあえずこうやるんだで全然大丈夫です。
メールを立ち上げる前の準備としてコピペしてみてください。
Sub メール立ち上げの準備()
Dim outlookObj As New Outlook.Application
Dim myNamespace As Outlook.Namespace
Set myNamespace = outlookObj.GetNamespace("MAPI")
End Sub
Namespaceオブジェクトは
受信、送信メールや予定表、連絡先といったデータにアクセスするためのものです。
上記のように書くということで全然OKです。
これでOutlookのデータにアクセスできます。
getdefaultfolderメソッド
Outlookには受信メールや送信メール、予定表、連絡先などがあり、
どのデータにアクセスするかを選ぶ必要があります。
それが Namespaceオブジェクトの getdefaultfolderメソッド です。
構文:Namespaceオブジェクト.GetDefaultFolder(フォルダの種類)
引数にフォルダの種類を入れます。
よく使うものを表記します。
引数 | 説明 |
olFolderInbox | 受信メール |
olFolderSentMail | 送信済メール |
olFolerCalendar | 予定表 |
olFolderContacts | 連絡先 |
Namespaceオブジェクト.GetDefaultFolder(フォルダの種類) .displayメソッドとすることで
表示することができます。
Sub メール立ち上げ()
Dim outlookObj As New Outlook.Application
Dim myNamespace As Outlook.Namespace
Set myNamespace = outlookObj.GetNamespace("MAPI")
myNamespace.GetDefaultFolder(olFolderInbox).Display
End Sub
これやると結構驚かれます。
実はすごい簡単です。
プログラマーっぽいですよね笑
でも、一つ問題点があります。
使っているとわかるんですが、
プログラムを実行するたび、outlookが何個も生成されることになるので
面倒な状態になります。
Outlookが既に起動しているか確認する方法
Outlookがいくつ開いているか確認する方法があります。
Explorerオブジェクトを使用します。
構文: オブジェクト.Explorers
特定のエクスプローラーを表す オブジェクトを取得できます。
今回の場合は
Outlookオブジェクト.Explorers.Countとcountを付けることで
Outlookのディスプレイの数を取得することが出来ます。
これらを組み合わせてプログラムを組みましょう。
Sub メール立ち上げ()
'Outlookオブジェクトのインスタンス生成
Dim outlookObj As New Outlook.Application
'NamespaceオブジェクトでOutlookのデータに接続
Dim myNamespace As Outlook.Namespace
Set myNamespace = outlookObj.GetNamespace("MAPI")
'Explorer.Countで既に起動しているOutlookオブジェクトの数を確認
Dim objCnt As Long
objCnt = outlookObj.Explorers.Count
'一個以上開いている場合はプログラム終了
If objCnt >= 1 Then
Exit Sub
End If
'ディスプレイ表示
myNamespace.GetDefaultFolder(olFolderInbox).Display
End Sub
いかがでしょうか。
Outlookを起動させることができ、
さらに既に開いている場合は無限に起動させないようにしています。
次回受信フォルダからメールを取得してみたいと思います。