第26回 VBA会 登壇者 くのへ
VBAの悩みはVBAerに聞け
開催日時:2021年10月16日 20時~
登壇者 :くのへ@OutlookVBAer
テーマ :Outlookイベントでウェーイ!
今回はOutlook VBAの第一人者 くのへさんにご登壇いただきました。
OutlookはExcelとも相性がよいツールですが、VBAとなるとブログなどの情報が少ないのが難点。そんな中、OutlookVBA入門書など、積極的に情報発信いただいているのがくのへさんです。
自己紹介
(カササギって鳥なのね。知らんかった。重厚長大エンジニア!)
(フィリピンまで南下して戻ってるw。こっちが本当の渡り鳥だったか!)
(いやこっち↑)
(きのこファンネルは・・マジ変態www)
(日曜の機械紹介シリーズはめっちゃ詳しく説明するし、ほんと面白いんだよねぇ。)
(くのへと言えばクソリプだよねw)
(くのへ・・・おまえ眩しすぎるぜ☆☆)
(ちゃっかり本の紹介も)
今日の本題
(3のイベントがよさそうな感じ。楽しみワクワク)
1)Outlook VBAの構造をのぞいてみよう
(実際に書き書き)
(ローカルウィンドウでOutlook.Applicationの中身をのぞいてみる)
(3つ大事。その中でもSessionが一番大事)
(アカウント2つ使ってる状態)
(これで二つ目のアカウントの受信フォルダの2つ目のメールのメールサブジェクトね。ややこしぃぃ。けど前の画像見るとたしかにこんな感じよね。)
(ExcelVBAからでも同じ操作が可能)
(受信トレイのメールをExcelシートに書き出すプログラム)
ここで質問。
Set appOL = New Outlook.Application
としているが、Newキーワード使っても起動アプリは増えない不思議。
Outlook特有の動きっぽい。
メールをファイルとして保存してみよう
(まずはメール本体の保存。SaveAsはExcelと同じ。拡張子を.msgにするのがポイント)
REってファイルができたぞ!なんだこれ?・・・わかんねぇ。というとでステップインで確認。3通目のメールが原因っぽい。
さらに詳細確認して、、ファイル名に「RE:1分後送信テスト・・」と付けようとして、禁止文字「:」以降が無視されている模様。(なるほどぉぉぉ)
ここで参加者から質問
(即答!)
2.イベントマクロを使ってみよう
(こっからが今日の本題!ワクワク)
ApplicationとItemSendを選択。
メールの[送信]ボタンを押したときのイベント
(Cancel = True で呪いのマクロ。絶対メール送れないOutlookの完成w)
(添付忘れ防止のアラート・・これは呪いじゃない)
3.メールを移動したらPCにも保存されるマクロ
https://kunohe.tech/outlook-vba/1763/
2か所修正が必要
自分のPC環境に合わせてフォルダパスを記入する。
[分類1]フォルダを作る、もしくはイベントマクロのフォルダ名を変更する。
分類1フォルダにメールを移動すると、PCフォルダにも自動的に保存されるマクロの完成。
(これはなかなかスゲーな。Outlook操作だけで共有サーバフォルダ等に添付ファイルを保存するなんてこともできそう)
WithEventsの解説
WithEventsはDimと同じと思ってよい。変数ができる。加えて型に応じたイベントに反応するようになるってだけ。
ItemsにするとItemAdd/ItemChagne/ItemRemveのイベントが使える。
型をInspectorsにするとNewInspectorイベントが使える。
(NewInspector・・・なんだ???)
Docsにも記載があるので頑張て読もう。
(OutlookのDocsは深いよね。)
添付ファイルを保存するマクロの本体説明
(埋め込み画像は添付として保存しない処理が丁寧だわぁ)
4.さらにカスタマイズ
気軽に作ったプロジェクトAフォルダにも気軽に対応できる汎用性が欲しい
(プロジェクトA!!!)
(デバッグ中)
(イベント中の処理はデバグ処理で停止ボタン等を押すと、WithEventもやり直し)
ということで、しっかり作って出来上がりぃぃぃ。
今日の資料
サンプルプログラムページ
資料
今日の座布団
勉強になった、役に立ったと思っていただけた方は
投げ銭もよろしくお願いします。