引用:
どの様にして、保存だけだと判断したのでしょうか?
シングルステップにて実行してみましたか?
メール作成画面があり、コードが進む毎に、その内容が手動で宛先等の設定、ファイル添付の様に
画面に反映されると お思いでしょうが、そうではありません。
そもそも、コードに問題がなく、コードの通りに動いているなら、
画面に反映させる必要はありません。
例えば、
WorkSheets(1).Activate
WorkSheets(2).Range("A1").Value = "A1"
上記の場合
シート1をアクティブにし、シート2 の A1 に A1 を代入。
シート2の 画面は表示されません。 が、シート2のA1 には代入されている。
メール作成ウィンドは表示されていないが、メールは作成されている。
表示、保存、送信 の いずれも 行われていないので、
画面上、実行ユーザーが見ている画面上では何も実行されていない様に見えます。
でも、コーディング者であれば、シングルステップにて実行しVBEのローカルウィンドにて
Set outlookMail = outlookApp.CreateItem(0)
ここで、オブジェクト outlookMail が Nothing から、何か参照された事が判り
With outlookMail
' 件名と本文を設定
.Subject = "請求書をお送り致します。"
.Body = "いつも大変お世話になっております。"
ここまでで、outlookMail の Subject、Body に 文字列が設定されている事を確認でき
' 添付ファイルの追加
.Attachments.Add pdfFileName
ここで、outlookMail に 添付ファイルが添付されている事を確認できたはず。
ここまでわかったなら、
『 じゃぁ、その outlookMail に対し
画面表示なり、保存、送る、削除 等の命令を送る事が出来るのでは?』
と推測し、調べる事になるのです。
開発者にとって、ローカルウィンドはオブジェクトの状態を知る上で必要です。
画面だけで判断しない様にしましょう。