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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ワードプレス、Contact Form 7...
-
powerbuilderのメール機能について
-
一定時間毎に同じ動作を繰り返...
-
コマンドプロンプトで添付ファ...
-
メール送信 MAPIMessages.Send ...
-
Bookを閉じて保存した時のみ実...
-
リファラが取得できない?
-
存在しないメールアドレスかど...
-
フォントの色を変えるには?
-
PHPの設定で、 エラーが発生し...
-
onedrive にexcelファイルをア...
-
Linux:PHPでTELNETによるSMTP...
-
ListViewコントロールでサムネ...
-
ボタンのクリック数を合計保存...
-
PHPのif文でその処理を途中で抜...
-
現在位置より2つ上のディレク...
-
別ファイルの変数を呼び出した...
-
【file_exists】ファイルが存在...
-
UWSCでファイルのアップロード...
-
PHPExcel処理速度が遅い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ワードプレス、Contact Form 7...
-
コマンドプロンプトで添付ファ...
-
存在しないメールアドレスかど...
-
VB6にてメールを送信する方法
-
ヒアドキュメントを利用してメ...
-
メールアドレスの存在確認はで...
-
Bookを閉じて保存した時のみ実...
-
AccessのDoCmd.SendObjectについて
-
submitボタンの二重送信について
-
リファラが取得できない?
-
HPの更新をしたら自動でメール...
-
javamailで220の応答が遅い
-
Q)PHPでメール送信について
-
ループの中で mailItemObj.Disp...
-
mail関数を使うと遅いので
-
ロリポップと、phpで自動の返信...
-
<HTML>~入る タグ が無いから ...
-
phpメールフォームから送信され...
-
ランダムな文字列を生成しその...
-
VB.NETでフリーメールアドレス...
おすすめ情報