皆様こんにちは、ノグチです。
メールでやり取りをしていて、メールの内容を予定に登録したいこと、ありますよね。
ランチのお誘いだったり、ミーティングの日程だったり、書類の提出期限だったり。
メール画面からワンクリックで予定登録の画面を開けたら便利なのになあ…
ついでに、メールの内容を予定に貼り付けておいてくれたら助かるのに…
それ、VBAを使えばできちゃいますよ。
ということで今回は、ワンクリックで今開いているメールの内容を転記した予定登録画面を開く方法をご紹介します。
メールの内容を予定登録画面に転記する
では早速、以下の3ステップでメールの内容を予定登録画面に転記するコードを書いていきましょう。
- 今開いているメールのMailItemオブジェクトを取得する
- AppointItemオブジェクトを取得する
- AppointItemオブジェクトのプロパティにメールの値をセット
どれも今までの記事でご紹介した方法でできちゃいますよ。
1.今開いていメールのMailItemオブジェクトを取得する
まずは、今開いているメールのMailItemオブジェクトを取得しましょう。
今開いているメールのMailItemオブジェクトは、ApplicationオブジェクトのActiveInspectorメソッドでInspectorオブジェクトを取得して、更にInspectorオブジェクトのCurrentItemプロパティで取得できるのでしたね。
ここまでをコードにしてみると、こんな感じになります。
Dim objItem As Object Dim objIns As Inspector Set objIns = Application.ActiveInspector Set objItem = objIns.CurrentItem '今開いているメールオブジェクトを取得
2.予定のAppointItemオブジェクトを取得する
今開いているメールのMailItemオブジェクトが取得できたら、お次は予定のアイテムオブジェクトを取得しましょう。
予定は、AppointItemオブジェクトで操作するということは、以前こちらの記事でご紹介しました。
このAppointItemオブジェクトを取得するために、ApplicationオブジェクトのCreateItemメソッドを使い、引数にAppointItemオブジェクトの定数olAppointmentItemをセットします。
こんな風に。
Dim objApItem As Outlook.AppointmentItem Set objApItem = Application.CreateItem(olAppointmentItem)
3.メールの内容をAppointItemオブジェクトのプロパティにセット
AppointItemオブジェクトが取得できたら、次はメールから取得した情報を、予定の内容にセットしていきます。
今回は予定の件名と本文に、今開いているメールの件名と本文をそれぞれセットすることにしましょう。
AppointItemオブジェクトのSubjectプロパティとBodyプロパティに、MailItemオブジェクトのSubjectプロパティとBodyプロパティで取得した値をセットします。
MailItemオブジェクトのプロパティについては下記記事をご覧くださいね。
そして、それぞれプロパティをセットした状態で予定登録画面を開きたいので、プロパティセットの後にDisplayメソッドを加えておきます。
こんな感じ。
With objApItem .Subject = objItem.Subject .Body = objItem.Body .Display End With
今開いているメールの内容を予定の画面に転記するコード
Sub Add_AppointItem() Dim objItem As Object Dim objIns As Inspector Dim objApItem As Outlook.AppointmentItem Set objIns = Application.ActiveInspector Set objItem = objIns.CurrentItem '今開いているメールオブジェクトを取得 Set objApItem = Application.CreateItem(olAppointmentItem) With objApItem .Subject = objItem.Subject .Body = objItem.Body .Display End With End Sub
今開いているメールの件名と本文を予定の件名と本文にセットして、Displayメソッドで予定登録画面を表示する、というコードです。
ではメールをメールを開きつつ、実行してみましょう。
こちらのメールを開いて…
マクロを実行してみると…
この通り、開いているメールの内容が、予定登録画面に転記されていますね。
あとは予定の内容を編集して、保存ボタンを押せば、予定登録完了です。
登録画面を表示しないで予定を登録しておきたい場合は、上のコードのDisplayメソッドの部分を、Saveメソッドに書き換えればOK。
VBAのプロシージャをメニューに追加する
メールの内容を予定登録画面に転記する方法をご紹介しましたが、マクロの起動方法も大切ですよね。
折角予定登録はマクロがやってくれたとしても、マクロの起動を「メニューから開発タブを開いて、マクロからプロシージャを選んで…」と複数ステップを踏んでいては、手間が減っているようには思えません。
折角なので、プロシージャをメニューにセットして、ワンクリックで起動できるようにしてしまいましょう。
まず、メールのメニューバーからファイル>オプションを開きます。
(Outlookのオプションではなく、メール画面からのオプションなので注意です。)
オプション画面の『リボンのユーザー設定』を選択して、右側の下部にある「新しいタブ」ボタンで新しいタブを追加しておきます。
次に左側のリストから「マクロ」を選択します。
すると、今あるプロシージャ名がリストで表示されますので、メニューバーに表示しておきたいプロシージャを選択して、画面中央にある「追加」ボタンで、先ほど追加した新しいタブに加えておきます。
後はOKを押してオブション画面を閉じれば…
このように、メールのメニューにプロシージャがセットできました。
あとは、開いたメール画面でこのプロシージャをクリックすれば、マクロが実行されます。
もちろん、この記事以外でご紹介しているコードも、この方法でメニューにセットしておくことができますよ。
但し、イベントプロシージャはメニューにセットすることができません。
イベントプロシージャは対象となるイベントが起こったときに自動的に実行されますので、そもそもセットしておく必要もありませんからね。
最後に
今回は、ワンクリックで今開いているメールの内容を転記した予定登録画面を開く方法をご紹介しました。
記事の中ではメールから予定に転記したのは件名と本文だけでしたが、本文から日付や場所を取り出すことができれば、更に予定登録が楽になりますね。
それでは、最後までお読みいただきありがとうございました!
連載目次:Outlook VBAでメールを操作してみよう
メーラーとして名高く、そして便利なOutlook。
Outlookのメールだって、VBAで操作することができますよ。本シリーズでは、Outlookのメールを、VBAで操作する方法をご紹介していきます。