
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
存在しないメールアドレスかど...
-
HPの更新をしたら自動でメール...
-
ロリポップと、phpで自動の返信...
-
コマンドプロンプトで添付ファ...
-
メールフォームの重複送信の制...
-
拡張子PHP3のスクリプトを...
-
phpのheader("Location:#pos")...
-
PHPのif文でその処理を途中で抜...
-
CFileDialogの最初のディレクト...
-
*.php、*.php3、*.phtmlの違い
-
.phpと.incファイルの違いはな...
-
require_once()でファイルが読...
-
ImageCreate関数が undefined f...
-
php4とphp5での数値の取り扱い...
-
Prompt入力値をphp変数として取...
-
header(Location:~)で$_SESS...
-
シェルスクリプトをPHPで動かそ...
-
HPを開くとダウンロードページ...
-
phpのextension_dirを複数指定...
-
【file_exists】ファイルが存在...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループの中で mailItemObj.Disp...
-
SoftBankにメール送信できない
-
【エクセルVBA】メール送信前に...
-
basp21 Proでのメールの暗号化...
-
VBでメールを送る時のSMT...
-
コマンドプロンプトで添付ファ...
-
空メール送信~メールアドレス取得
-
BASP21を使って
-
存在しないメールアドレスかど...
-
SendMailがエラーを返さない
-
HPの更新をしたら自動でメール...
-
VB.NETでフリーメールアドレス...
-
Bookを閉じて保存した時のみ実...
-
一定時間毎に同じ動作を繰り返...
-
phpでメールを送信
-
PHPで空メールの自動返信を作り...
-
$_SERVER{'HTTP_X_UP_SUBNO'}取...
-
javamailで220の応答が遅い
-
PHPでメール送信する際の送信数...
-
UWSCにつきまして
おすすめ情報