見出し画像

第26回 VBA会 登壇者 くのへ

VBAの悩みはVBAerに聞け
開催日時:2021年10月16日 20時~
登壇者 :くのへ@OutlookVBAer
テーマ :Outlookイベントでウェーイ!

今回はOutlook VBAの第一人者 くのへさんにご登壇いただきました。
OutlookはExcelとも相性がよいツールですが、VBAとなるとブログなどの情報が少ないのが難点。そんな中、OutlookVBA入門書など、積極的に情報発信いただいているのがくのへさんです。

画像2

画像1

自己紹介

画像3

画像4

(カササギって鳥なのね。知らんかった。重厚長大エンジニア!)

画像5

画像6

(フィリピンまで南下して戻ってるw。こっちが本当の渡り鳥だったか!)

画像52

(いやこっち↑)

画像7

(きのこファンネルは・・マジ変態www)

画像8

(日曜の機械紹介シリーズはめっちゃ詳しく説明するし、ほんと面白いんだよねぇ。)

画像9

(くのへと言えばクソリプだよねw)

画像10

(くのへ・・・おまえ眩しすぎるぜ☆☆)

画像11

(ちゃっかり本の紹介も)

今日の本題

画像12

(3のイベントがよさそうな感じ。楽しみワクワク)

1)Outlook VBAの構造をのぞいてみよう

画像13

(実際に書き書き)

画像14

(ローカルウィンドウでOutlook.Applicationの中身をのぞいてみる)

画像15

(3つ大事。その中でもSessionが一番大事

画像16

(アカウント2つ使ってる状態)


画像17

(これで二つ目のアカウントの受信フォルダの2つ目のメールのメールサブジェクトね。ややこしぃぃ。けど前の画像見るとたしかにこんな感じよね。)

画像18

(ExcelVBAからでも同じ操作が可能)

画像19

(受信トレイのメールをExcelシートに書き出すプログラム)

ここで質問。
Set appOL = New Outlook.Application
としているが、Newキーワード使っても起動アプリは増えない不思議。
Outlook特有の動きっぽい。

画像20

メールをファイルとして保存してみよう

画像21

(まずはメール本体の保存。SaveAsはExcelと同じ。拡張子を.msgにするのがポイント)

画像22

REってファイルができたぞ!なんだこれ?・・・わかんねぇ。というとでステップインで確認。3通目のメールが原因っぽい。

画像23

さらに詳細確認して、、ファイル名に「RE:1分後送信テスト・・」と付けようとして、禁止文字「:」以降が無視されている模様。(なるほどぉぉぉ)

ここで参加者から質問

画像24

(即答!)

画像26

画像25

2.イベントマクロを使ってみよう

(こっからが今日の本題!ワクワク)

画像28

画像27

画像29

ApplicationとItemSendを選択。
メールの[送信]ボタンを押したときのイベント

画像30

画像31

(Cancel = True で呪いのマクロ。絶対メール送れないOutlookの完成w)

画像32

(添付忘れ防止のアラート・・これは呪いじゃない)

3.メールを移動したらPCにも保存されるマクロ

https://kunohe.tech/outlook-vba/1763/

2か所修正が必要

画像33

自分のPC環境に合わせてフォルダパスを記入する。

画像34

画像35

[分類1]フォルダを作る、もしくはイベントマクロのフォルダ名を変更する。

分類1フォルダにメールを移動すると、PCフォルダにも自動的に保存されるマクロの完成。

画像36

(これはなかなかスゲーな。Outlook操作だけで共有サーバフォルダ等に添付ファイルを保存するなんてこともできそう)

WithEventsの解説

画像37

WithEventsはDimと同じと思ってよい。変数ができる。加えて型に応じたイベントに反応するようになるってだけ。

画像38

ItemsにするとItemAdd/ItemChagne/ItemRemveのイベントが使える。

画像39

型をInspectorsにするとNewInspectorイベントが使える。

(NewInspector・・・なんだ???)

Docsにも記載があるので頑張て読もう。

画像40

(OutlookのDocsは深いよね。)

添付ファイルを保存するマクロの本体説明

画像41

(埋め込み画像は添付として保存しない処理が丁寧だわぁ)

4.さらにカスタマイズ

画像42

気軽に作ったプロジェクトAフォルダにも気軽に対応できる汎用性が欲しい

画像43

(プロジェクトA!!!)

画像45

画像44


画像49

画像47

画像48

画像47

(デバッグ中)

(イベント中の処理はデバグ処理で停止ボタン等を押すと、WithEventもやり直し)

ということで、しっかり作って出来上がりぃぃぃ。

画像50

今日の資料

サンプルプログラムページ

資料

今日の座布団

画像54

勉強になった、役に立ったと思っていただけた方は
投げ銭もよろしくお願いします。




この記事が気に入ったらサポートをしてみませんか?