
Bookを閉じて「保存した時のみ」メールを送信するマクロです。
--------------------------------------------
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
On Error GoTo ErrorHandler
Dim objOutlook As Outlook.Application
Dim objMail As Outlook.MailItem
Set objOutlook = New Outlook.Application
Set objMail = objOutlook.CreateItem(olMailItem)
With objMail
.To = "test@"
.CC = ""
.BCC = ""
.Subject = "【テスト】自動送信"
.Body = "このメールは自動テストメールです"
.BodyFormat = olFormatPlain
End With
objMail.Send
GoTo Finally
ErrorHandler:
MsgBox "メールの送信に失敗しました", vbOKOnly + vbCritical
Finally:
Set objOutlook = Nothing
End Sub
--------------------------------------------
AfterSaveではちょこちょこ上書き保存でも実行してしまうので
最後に保存して閉じた時だけ実行出来るようにしたいと思っています。
ご教授お願いします。

No.3ベストアンサー
- 回答日時:
Option Explicit
Private Saved As Boolean
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Saved = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not Saved Then Exit Sub
On Error GoTo ErrorHandler
Dim objOutlook As Outlook.Application
Set objOutlook = New Outlook.Application
With objOutlook.CreateItem(olMailItem)
.To = "test@"
.CC = ""
.BCC = ""
.Subject = "【テスト】自動送信"
.Body = "このメールは自動テストメールです"
.BodyFormat = olFormatPlain
.Send
End With
Finally:
Set objOutlook = Nothing
Exit Sub
ErrorHandler:
MsgBox "メールの送信に失敗しました", vbOKOnly + vbCritical
Resume Finally
End Sub
ご回答ありがとうございました。
>Private Saved As Boolean
このままコピペしましたらコンパイルエラーとなりましたので
削除し思う通り、作動いたしました。
短時間の中、ありがとうございました。

No.2
- 回答日時:
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
↑
この中で更新フラグを立てて
Private Sub Workbook_BeforeClose(Cancel As Boolean)
↑
この中で更新フラグを見て処理をする。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) Excel・ユーザーフォームの情報を受け渡したい 4 2022/06/08 10:11
- Visual Basic(VBA) excel VBAでメールを送る方法について 2 2021/11/03 15:34
- Visual Basic(VBA) VBA EXCELからメールを送る方法について 5 2021/11/04 06:30
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) シート名をフォルダ名に変更 1 2021/12/01 15:59
- Visual Basic(VBA) VBA 添付ファイルをつけてメールを送る方法について 1 2021/10/29 08:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mb_send_mailについて
-
VB6にてメールを送信する方法
-
php header
-
空メール送信~メールアドレス取得
-
<HTML>~入る タグ が無いから ...
-
「\\r」は全く使用しないものな...
-
メールアドレスの存在確認はで...
-
二重投稿防止方法
-
ヒアドキュメントを利用してメ...
-
特定のIPアドレスでPHPを...
-
ブラウザの更新ボタン
-
PHP バックグラウンド処理
-
PHPでFAX
-
VBスクリプト:メールを送信する
-
98でBorlandC++5.51でメール送...
-
バーコードで読み取りメール送信
-
ループの中で mailItemObj.Disp...
-
この文字化け文字を解読できますか
-
PHPのif文でその処理を途中で抜...
-
フォントの色を変えるには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6にてメールを送信する方法
-
ループの中で mailItemObj.Disp...
-
submitボタンの二重送信について
-
ヒアドキュメントを利用してメ...
-
存在しないメールアドレスかど...
-
メールフォームの重複送信の制...
-
コマンドプロンプトで添付ファ...
-
HPの更新をしたら自動でメール...
-
心配で夜寝ていられません!!!
-
VB.NETでフリーメールアドレス...
-
メール送信 MAPIMessages.Send ...
-
mb_send_mailで複数宛てにtoで送信
-
AccessのDoCmd.SendObjectについて
-
MAPI コンポーネントを使ったメ...
-
【エクセルVBA】メール送信前に...
-
SendMailがエラーを返さない
-
PHPでメール送信する際の送信数...
-
UWSCにつきまして
-
空メールの作り方教えて欲しい...
-
powerbuilderのメール機能について
おすすめ情報