会社でメールをやり取りする際にOutlookをメーラに採用している企業は多いのではないでしょうか。
Microsoft365を導入している企業であれば必須アプリですね。
そんなOutlookですが、Excelと同じようにマクロのVBAが扱えるんです!
今回は、
・Outlook VBAの実装手順やエラー対処法
・Outlook VBAでメール、連絡先、予定表、会議予約などを扱う方法
についてまとめます!
もくじ
Outlook VBAのメリット
Outlook VBAのメリットその一
Outlook VBAのメリットその一は
OutlookはすでにVBAが実行できる環境が整っている
というためです。
Outlookは開発専用のアプリケーションを追加インストールする必要なく
開発タブの追加だけで、開発できる環境ができてしまうのです。
多くの企業で採用されているOutlookですが、導入許可やコストをかけることなく、
効率化や自動化ができるということで、利用しない手はないですね!
Outlook VBAのメリットその二
Outlook VBAのメリットその二は、ほとんどの方が手動でおこなう部分をカンタンに自動化できるという点です。
業務において、
・タスク開始のトリガーと終了の報告はメールでおこなう
・会議や予定はOutlookの予定表で集中管理している
ということが多いかと思いますが、
これらすべて手動で行っていないでしょうか。
例えば、日報、週報、月次報告、見積や請求書送付、各種申請、承認依頼、関係者確認依頼、スケジュール調整、作業依頼、内部共有会議コールなどなどです。
これがワンクリックで、部署内のだれよりも早く、正確にできたらうれしいですよね。
特に毎日のルーチンワークが自動化できた場合、短期では短くても長期的に見れば膨大な時間が節約できるという訳です。
Outlook VBAのメリットその三
Outlook VBAのメリットその三はOutlook VBAの習得は実はカンタンであるという点です。
Outlook VBAが難しく感じる理由は、Outlook VBAに関する文献が絶望的に少ないからです。
さらにネットで検索すればOutlook VBAの記事はありますが、どれも専門的過ぎてわかりにくいですよね。
Outlook VBAを理解しようにも関連する情報や具体例がないために難しく感じているというだけなのです。
エク短ではそんなOutlook VBAをわかりやすく、かつ即実務へ活かせるような形で伝えていき、
Outlook VBAによる実務力アップの手助けができればと思っています。
Outlook VBAを扱う上での注意点
Outlook VBAを利用する価値があることは理解いただけたかと思いますが、
よい話ばかりではないということもお伝えしなければなりません。
それは、セキュリティーポリシーから制限がかけられてきた歴史があるのです。
「メールを受信したらマクロ実行」
このパターンってワームの機能に似ていますよね…
Outlook2013以降はルールによるスクリプト実行も廃止され、
ますます制限がかけられている状況です。
エク短におけるOutlook VBAは、そんなリスクを軽減するために、
メール送信や一括更新などの処理をする場合には注意喚起とメッセージを出すよう工夫をしていきます。
問題発生の機会をなるべく少なくし、総合的に時短につながればよいと思っています。
Outlook VBAを実行するための下準備をする
まずははじめの第一歩。
リボンメニューへ 開発 タブを追加しましょう。
※デフォルトでは 開発 タブは非表示となっています。
1.リボンのユーザー設定 をクリックします。
2.右の リボンのユーザ設定 のボックスのリストメニュー 開発へチェックを入れOK をクリックします。
3.リボンメニューに 開発タブが表示されたら完成です。
Outlook VBAコードの配置場所について
VBAコードを配置する場所について説明します。
1. 開発タブをクリックし、Visual Basicボタンをクリックします。
2. Visual Basicアプリケーションの左メニューに表示されているProjectをクリックしながら展開し、
最後に表示されるThisOutlookSessionをクリックします。
3.プロジェクトのコードエリアが表示されます。
このエリアにコードを入力することによりOutlook側でマクロとして認識され、マクロが実行できるようになります。
簡単なOutlook VBAを実行してみよう
さっそくお試しでOutlook VBAを実行してみましょう。
1.以下コードををコピーします。
Sub test()
MsgBox "Hello エク短!"
End Sub
2.プロジェクトのコードエリアにコードをコピペします。
3.上部メニューの⇒をクリックし実行します。
4.メッセージボックスが表示されたら完成です!
正常に機能していることが確認できましたね。
もし機能しなかったら
もし機能しなかったら、
「Microsoft Outlook Object Library」の参照設定がされているか
確認をしましょう。
Visual Basicボタンをクリックし、画面が開いたら、
メニューからツール>参照設定を選択します。
「Microsoft Outlook ** Object Library」にチェックを入れ、
OKをクリックしたら完了です。
それでもできなかったら
それでもできなかったらマクロの起動が無効化されているかもしれません。
その場合はセキュリティセンターからマクロの設定を変更するようにしましょう。
参考:マイクロソフト Office ドキュメントのマクロを有効または無効にする
1.ファイル タブをクリックします。
2.オプション をクリックします。
3.セキュリティ センター をクリックし、セキュリティ センターの設定 をクリックします。
4.セキュリティ センター の マクロの設定 をクリックします。
5.セキュリティ センターの マクロの設定 領域ですべてのマクロを有効にするをチェックし、OK をクリックしたら完成です。
具体例を交えご紹介します。
Outlook VBAでメールのチェックをしてみる
Outlookのメール送信前のチェックはセキュリティー対策として有効です。
高額なセキュリティ対策ソフトを導入することなく簡単に実現できます。
- 【Outlook VBA】カンタン!送信前に入力した宛先が指定外ドメインの場合は送信させない
- 【Outlook VBA】カンタン!送信する宛先のドメイン毎に署名を切り替える
- 【Outlook VBA】カンタン!送信前に入力した宛先が指定外ドメインで、かつ添付ファイルがある場合は警告する
- 【Outlook VBA】カンタン!送信前に入力した宛先に指定外ドメインが含まれるか確認する
- 【Outlook VBA】カンタンに送信前に入力した宛先を確認するメッセージを表示する
セキュリティ事故最新事情をまとめてみました。
Outlook VBAのイベント、オブジェクト
Outlook VBAのイベント、オブジェクトです。
はじめは難しいと思いますので、そんなことできるんだぐらいに一度眺めてもらえばと思います。
- 【OutlookVBA】GetNamespaceメソッドのフォルダの種類と引数はなに?サンプルVBAで解説!
- 【Outlook VBA】Outlook VBAのプロパティとメソッドについて
- 【Outlook VBA】Outlook VBAのオブジェクトについて
Outlook VBAで本文中にハイパーリンクを付与する
業務でよく使うハイパーリンクを付与する作業をOutlook VBAで自動化してみました。
- 【Outlook VBA】ボタンクリック一発でハイパーリンクを一括追加、またはハイパーリンクを一括削除する
- 【Outlook VBA】メール本文中のハイパーリンクを一括で削除する
- 【Outlook VBA】メール本文中の”\\”や”file:”から始まる文字列へハイパーリンクを一括挿入する
- 【Outlook VBA】メール本文中の”http”から始まる文字列へハイパーリンクを一括挿入する
- 【Outlook VBA】メールの署名にハイパーリンクを追加する方法
Outlook VBAで添付ファイルを扱ってみる
メールで扱うことが多い添付ファイル関連の操作についてまとめました。
- 【Outlook VBA】受信トレイの添付ファイルを一括保存する方法!期間指定も!
- 【Outlook VBA】受信したメールの添付ファイルを自動作成した日付フォルダへ保存&添付ファイルリストをExcel形式で出力
- 【Outlook VBA】メールの添付ファイルを保存&添付ファイル名一覧を取得する方法
- 【Outlook VBA】受信したメールの添付ファイルを指定フォルダへ保存する
- 【Outlook VBA】カンタン!送信前に入力した宛先が指定外ドメインで、かつ添付ファイルがある場合は警告する
- 【Outlook VBA】添付ファイル付きでメールを作成/送信する方法!複数ファイルも可!
- VBAでOutlook受信メール一覧をExcelに取り込む方法!添付ファイルやサブフォルダも取得可!
Outlook VBAで連絡先を扱ってみる
Outlookの連絡先に関する技をまとめました。
Excelから操作しますのでExcel VBAとOutlook VBAが混在する形となります。(ちょっと複雑ですよね…)
- 【VBA】Outlookの連絡先情報をExcelデータから一括更新する方法
- 【VBA】ExcelデータからOutlookの連絡先へ一括登録する方法
- 【VBA】Outlookの連絡先をExcelシートへ一括出力する方法!87項目まとめ!
- 【VBA】Outlookの共有の連絡先をExcelシートへ一括出力する方法!追加フォルダも出力可!
- 【VBA】ExcelデータからOutlookの共有の連絡先へ登録/更新する方法!追加フォルダも対応可!
- 【Outlook VBA】Outlook連絡先をVBAのSavaメソッドで一括更新してみよう
- 【Outlook VBA】Outlook連絡先をVBAのFindメソッドで検索してみよう
Outlook VBAでメモを扱ってみる
Outlookのメモに関する技をまとめました。
連絡表と同じExcelVBAとOutlookVBAの混合型とOutlookVBA単体の説明となっています。
Outlook VBAでタスクを扱ってみる
Outlookのタスクに関する技をまとめました。
連絡表と同じExcelVBAとOutlookVBAの混合型とOutlookVBA単体の説明となっています。
Outlook VBAで予定表や会議予約を扱ってみる
Outlookの予定表に関する技をまとめました。
連絡表と同じくExcelVBAとOutlookVBAの混合型となっています。
テレワークの普及で見えにくくなっている部下の業務実態がワンクリックで見えてしまいますからね。
- 【VBA】ExcelへOutlookの追加予定表の予定情報を取り込む方法
- 【VBA】ExcelからOutlookの追加した予定表へスケジュールを登録する
- 【VBA】一瞬でExcelワークシートからOutlookの予定表へスケジュールを登録する
- 【VBA】Excel からOutlookへ終日の予定を登録する方法!複数日指定も!
- 【VBA】Excelの表をOutlookの予定表へ挿入する方法!画像貼り付けも可!
- 【VBA】Excel からOutlookの会議出席依頼を送信する方法!会議変更後の送信も対応!
- 【Excel VBA】一瞬で複数ユーザのOutlook予定表をExcelへ取り込む方法!
- 【Excel VBA】複数ユーザのOutlook予定表をExcelから登録・編集する方法!
- 【Excel VBA】先月、今月、翌月分のOutlook予定表データをワンクリックで取り込む
- 【Excel VBA】一瞬でExcelワークシートへOutlookの予定表を取り込む
- 【VBA】Outlook会議通知の重要度を設定する方法!
Outlook VBAで会議の出欠確認を集計してみる
読者の方から要望があり作成したもので、
複数の会議の出欠状況をExcelにまとめ、確認できるといった内容となっています。
そもそも出欠送らない人がいますし…
Outlook VBAでいろいろな種類のメールを作成・送信してみる
日報や障害報告などを例に、Excelでメール情報とメールテンプレートをまとめた上、
Outlook VBAでメールを作成、送信するといった内容となっています。
- 【VBA】業務日報をExcelテンプレートからワンクリックで作成、メール送信する方法
- 【VBA】障害・復旧メールをExcelテンプレートからワンクリックで作成、送信する方法
- 【VBA】Excelから複数・多種類のOutlookのメールを作成・送信する方法
- 【VBA】Excel からOutlookの会議出席依頼を送信する方法!会議変更後の送信も対応!
- 【Outlook VBA】メール本文を改行する方法!改行されない対処法も!
- 【Outlook VBA】メール本文にExcelの画像を挿入し作成/送信する方法!
- 【Outlook VBA】メール本文にExcelグラフを挿入し作成/送信する方法!
- 【Outlook VBA】HTML形式のメールを作成/送信する方法!書式やハイパーリンクも設定可!
- 【Outlook VBA】Excelから文字サイズ/色/種類/書式を指定しメールを作成/送信する方法!
- 【Outlook VBA】添付ファイル付きでメールを作成/送信する方法!複数ファイルも可!
- 【Outlook VBA】メール本文にExcel表を挿入し作成/送信する方法!
- 【Outlook VBA】メールを作成/送信する方法!Excelデータから作成も!
- 【Outlook VBA】指定時間にメールを自動送信する方法!タスクスケジューラや予定表から実行!
- 【Outlook VBA】クリップボードをすべてクリアする方法
Outlook VBAでメールを転送してみる
メール転送する時は宛先を追加したり、本文に一言添えたりすることがありますが、それがワンクリックでできるようになります。
仕訳ルールと併用すると全自動で転送メールを送信することもできます。
Outlook VBAでメールを返信してみる
メールを返信するパターンはTOのみの返信とCCを含めた全員の返信があります。
それぞれの送信パターンごとに宛先を追加したり、件名や本文に定型文を追加することがワンクリックでできるようになります。
Outlook VBAでOutlookフォルダ一覧を取得してみる
受信トレイや送信トレイ、予定表や連絡先、そしてオリジナルで作成したフォルダ含めたフォルダ一覧をExcelへ出力することができます。
見失ったフォルダを探したり、Excelでフォルダリストを管理したりいろいろな用途がありそうですね。
Outlook VBAでOutlook受信トレイのメール情報を取得してみる
受信トレイやサブフォルダのメール情報をExcelへ出力することができます。
メールの件名一覧や本文一覧を手っ取り早く収集したいときに有効ですね。
さいごに
いかがでしょうか。
今回は、
・Outlook VBAの実装手順やエラー対処法
・Outlook VBAでメール、連絡先、予定表、会議予約などを扱う方法
についてまとめてみました。
マイナーな言語でわかりにくくリスクもあるOutlook VBAですが、
エク短では初心者からベテランまで
誰でも難なく業務に生かせるようわかりやすさ、見やすさを心掛け、
Outlook VBAの良さをお伝えできればと思っています!
タカヒロ@extan様
お忙しいところご教示ありがとうございました。
★1 クリップボードをすべてクリア
→ OutlookでのVBAでは難しそうですね・・・。
★2 連続して2つの文字列を順番にコピー
→ 当方の質問の仕方が悪かったのか、質問と答えがかみ合っていないようです。いろいろ挑戦して解決方法が見つかりました。ご面倒をおかけしました。
★3 Outlookのクリップボードを表示
→ 頂いた方法で無事解決しました。
タカヒロ@extan様
いつも参考にさせていただいております。Outlook2016環境において、VBAでクリップボードを使いたく、お知恵を拝借したく、ご教示ください。よろしくお願いいたします。
質問内容
★1 クリップボードをすべてクリアにしたいのですがやり方を教えていただけますか。
★2 連続して2つの文字列を順番にコピーしようとすると、最後の文字列しかクリップボードにコピーできません。VBEで1行ずつ実行すると2つの文字列がクリップボードに入るため、コード自体は誤りないと思うのですが、処理時間によるエラーなのかと思います。エラーを回避して2つコピーする方法を助言いただけますでしょうか。
★3 Outlookのクリップボードを表示させることを今は手動で行っているのですが、マクロで表示させることは可能でしょうか。
以下が当方作成したマクロです。
↓
Sub 差出人と件名をクリップボードにコピー()
Dim objItem As Object
If TypeName(Application.ActiveWindow) = “Inspector” Then
Set objItem = Application.ActiveInspector.CurrentItem
Else
Set objItem = ActiveExplorer.Selection(1)
End If
‘★1 ここでクリップボードをすべてクリアにしたい。
With CreateObject(“Forms.TextBox.1”)
.MultiLine = True
.Text = objItem.SenderEmailAddress
.SelStart = 0
.SelLength = .TextLength
.Copy
End With ‘差出人をクリップボードにコピー
‘★2 VBEで1行ずつ実行(F8)すると差出人と件名どちらもクリップボードにコピーできるが、通常どおり実行(F5)すると件名しかコピーできない。
‘ F5で実行する場合、ここにStopを入れないと差出人と件名どちらもコピーできない。Stopを入れるとうまくいくがF5を押す手間が増える。F5を押さなくてもいいように代替案はないか?
Stop
With CreateObject(“Forms.TextBox.1”)
.MultiLine = True
.Text = objItem.Subject
.SelStart = 0
.SelLength = .TextLength
.Copy
End With ‘件名をクリップボードにコピー
‘★3 ここでクリップボードを表示したい。
Set objItem = Nothing
End Sub
いつもご利用ありがとうございます。
以下にご回答申し上げます。
★1 クリップボードをすべてクリアにしたいのですがやり方を教えていただけますか。
⇒Excel版となりますが、以下の記事に詳細な内容がございますので、よろしければご参考ください。
64Bit版
https://extan.jp/?p=3498#%E3%82%AF%E3%83%AA%E3%83%83%E3%83%97%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AE%E5%B1%A5%E6%AD%B4%E3%81%AE%E5%80%A4%E3%82%92%E3%81%99%E3%81%B9%E3%81%A6%E3%82%AF%E3%83%AA%E3%82%A2%E3%81%95%E3%81%9B%E3%82%8BVBA_64bit%E7%89%88
32Bit版
https://extan.jp/?p=3498#%E3%82%AF%E3%83%AA%E3%83%83%E3%83%97%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AE%E5%B1%A5%E6%AD%B4%E3%81%AE%E5%80%A4%E3%82%92%E3%81%99%E3%81%B9%E3%81%A6%E3%82%AF%E3%83%AA%E3%82%A2%E3%81%95%E3%81%9B%E3%82%8BVBA_32bit%E7%89%88
なお、Applicationの指定は開いているウインドウが対象となるので
Application.ActiveExplorer
で指定いただければと存じます。
なお、Application.ClipboardFormatsプロパティはExcelのプロパティとなり、Outlookではエラーとなりますことご了承願います。
★2 連続して2つの文字列を順番にコピーしようとすると、最後の文字列しかクリップボードにコピーできません。VBEで1行ずつ実行すると2つの文字列がクリップボードに入るため、コード自体は誤りないと思うのですが、処理時間によるエラーなのかと思います。エラーを回避して2つコピーする方法を助言いただけますでしょうか。
⇒GetFromClipboardメソッドなどでクリップボードの値を取得するときは最後の文字列が対象となります。2つ同時という処理はできないので、文字列に区切り文字を入れ、Split関数などで分割する方法が考えられます。
★3 Outlookのクリップボードを表示させることを今は手動で行っているのですが、マクロで表示させることは可能でしょうか。
⇒Application.ActiveExplorer.CommandBars(“Office Clipboard”).Visible をTrueにすることでできるかと存じます。コードは★1でご案内しました記事内に記載がございます。
なお、これまでの回答は机上での回答となりますことご了承願います。またもしうまくいきましたらお手数ですが、共有いただけますと幸いです。
今後Outlookのクリップボード操作に関する記事作成を検討したいと思います。
お返事ありがとうございました。
お陰様でクイック操作も設定できました。
この度は、見ず知らずの私のために貴重なお時間ありがとうございました。
ご親切に恐れ入ります。
早速メールテンプレートを試したところ上手くできました。
ただ欲を言えばなのですが、この方法だとテンプレートを出すまでに何ステップか必要ですので、できたらホーム画面で「新しいメール」を押すとテンプレートが出てくるとか、プラス1ステップくらいで出せる方法があると嬉しいのですが、さすがにそこまでは無理でしたら今のままでも助かりましたのでありがとうございました。
できたようでよかったです。
ボタンクリックでテンプレメールを立ち上げる方法はOutlookのクイック操作に登録することで可能となります。
クイック操作の登録方法は以下の通りです。
①「ホーム」タブの「クイック操作」グループにある「新しいクイック操作」をクリックし「新しい電子メール」を選択します。
②クイック操作の編集ウイザードでボタン表示となる名前を入力し、「オプション」>「オプションの表示」をクリックします。
③件名や宛先など入力をし、「保存」ボタンをクリックして保存します。
④クイック操作に登録したボタンをクリックするとテンプレからメールが作成されます。
初めまして。よろしくお願いいたします。
私は今までWin7のPCでウインドウズライブメールを使っていたのですが、先日win11のPCに買い替えたところライブメールは使えないということでアウトルックに移行しました。
こちらは会社でもなく、単純に子供たちとの事務連絡レベルのメールで使うくらいですので、あえて件名など入れずにパッパと送りたいのですが、アウトルックになってからは送信時にライブメールでは出てこなかった「このメッセージを件名なしで送信しますか?」という注意が毎回出てきてしまいます。
これが煩わしいので、送信ボタンを押したら即送信できるような設定ができるようでしたら教えていただけますでしょうか。
当方パソコンなどに全く詳しくないので、説明や情報が足りなかったら申し訳ありません。
というか、そもそもこちらで質問しても良かったのかも分かりませんので、もし場違いでしたら失礼をお許しください。
いつもご利用ありがとうございます。
Outlookで件名なしの場合警告を表示させないようにする設定ですが、
ざっと調べたところ標準では設定変更ができないようです。
他の方法としては、メールテンプレートからメールを作成する方法があります。
予め件名を入力したメールテンプレートを作成し、メールを作成する際テンプレートから作成するようにすれば都度件名を入れる必要はありません。
詳細はMicrosoftのサポートページをご参照ください。
https://support.microsoft.com/ja-jp/office/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%81%AB%E5%9F%BA%E3%81%A5%E3%81%84%E3%81%A6%E9%9B%BB%E5%AD%90%E3%83%A1%E3%83%BC%E3%83%AB-%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B-56c645fc-1b25-4059-808b-55ee72b6bc2d
またTeamsなどビジネスチャットツールでチャットによるメッセージ送信もよいかもしれません。
ご検討のほどおねがいいたします。
はじめまして、いつも勉強させていただいております
添付ファイルの操作で質問があるのですが
メールの件名を指定して最新日付の添付ファイルのみ指定フォルダに格納したい場合はどのようにしたらよろしいでしょうか?
いつもご利用ありがとうございます。
メールの件名を指定して最新日付の添付ファイルのみ指定フォルダに格納する方法ですが、
以下サンプルコードを一部変更することで対応可能となっております。
https://extan.jp/?p=866#%E3%83%9E%E3%82%AF%E3%83%AD%E3%82%92%E7%99%BB%E9%8C%B2%E3%81%99%E3%82%8B
■変更前
For Each objItem In objFolder.Items
For i = 1 To objItem.Attachments.Count
‘添付ファイルに拡張子がある場合のみ処理します。
If InStr(objItem.Attachments.Item(i), “.”) 0 Then
objItem.Attachments.Item(i).SaveAsFile strPath & objItem.Attachments.Item(i)
End If
Next i
Next objItem
■変更後
For Each objItem In objFolder.Items
‘メール件名が指定の値と一致した場合のみ処理します。
If objItem.Subject = “<メール件名を記入>” Then
For i = 1 To objItem.Attachments.Count
‘添付ファイルに拡張子がある場合のみ処理します。
If InStr(objItem.Attachments.Item(i), “.”) 0 Then
‘添付ファイル名に特定の文字がある場合のみ処理します。
If InStr(objItem.Attachments.Item(i), “<特定文字を記入>”) 0 Then
objItem.Attachments.Item(i).SaveAsFile strPath & objItem.Attachments.Item(i)
End If
End If
Next i
End If
Next objItem
以下に対象とするメール件名を入力します。
If objItem.Subject = “<メール件名を記入>” Then
取得したい添付ファイル名にある日付部分を<特定文字を記入>に入力します。
例えばファイル名「報告書yyyymmdd.doc」の形式としたら、本日2/18のファイルを指定する場合は「20220218」を入力します。
If InStr(objItem.Attachments.Item(i), “<特定文字を記入>”) 0 Then
※最新日付の定義によって指定内容を変更頂ければと存じます。
よろしくお願いいたします。
お世話になります。
予定表のVBA操作について、各所拝見し、とても参考になりました。
ひとつ質問ですが、定期的な予定を一回分だけ変更する手動操作をvba実行可能でしょうか。isrecurring はboolean型で読み込み専用なため難しいと思っています。
いつもご利用ありがとうございます。
VBAで定期的な予定を一回分だけ変更する方法につきまして、
定期的な予定は開始日、終了日、開催頻度などパターンによる登録であるため、
定期的な予定の状態(isrecurringがTrue)のまま1回目のみの日程等内容を変更することは難しい状況です。
ですので、
定期的な予定の開始日を2回目以降に変更し、1回目を単体の予定(isrecurringがFalse)で新規登録する
やり方が望ましいと考えます。
その場合VBAでは、
対象の定期的な予定の開始日を示すプロパティ「PatternStartDate」を2回目以降に変更し、
開催頻度や曜日指定の周期の変更があれば以下のDocsを参考に指定します。
https://docs.microsoft.com/ja-jp/office/vba/api/outlook.recurrencepattern
そしてSaveメソッドで保存します。
1回目の予定は記事を参考にプロパティを指定し、同じくSaveメソッドで保存します。
VBAを組んで検証できたら別記事で公開したいと思います。