
現在、下記コードにて「ファイルを閉じて保存した際にメールを送信」を実行しております。
実行(処理)をするセル範囲除外を付け加えたいと思っております。(その範囲の更新はメールが飛ばない)
変数宣言?でPrivate Target As Range
If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
End If
を加えればよいかと思いましたが出来ません。
ご教授頂きたいと思っております。
よろしくお願いいたします。
【元コード】
Option Explicit
Private SavedFlg As Boolean
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
SavedFlg = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Const olMailItem = 0
Const olFormatPlain = 1
If Not Saved Then
Select Case MsgBox("'" & ThisWorkbook.Name & "' の変更内容を保存しますか?", vbExclamation + vbYesNoCancel)
Case vbYes
Application.EnableEvents = False
ThisWorkbook.Save
Application.EnableEvents = True
SavedFlg = True
Case vbNo
ThisWorkbook.Saved = True
Case vbCancel
Cancel = True
Exit Sub
End Select
End If
If Not SavedFlg Then Exit Sub
On Error GoTo ErrorHandler
Dim objOutlook As Object
Set objOutlook = CreateObject("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

No.3ベストアンサー
- 回答日時:
Option Explicit
Private SavedFlg As Boolean
Private ChangeFlg As Boolean ' ← 追加
' ↓ 追加
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Intersect(Target, Sh.Range("A1:A100")) Is Nothing Then Exit Sub
ChangeFlg = True
End Sub
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
SavedFlg = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Const olMailItem = 0
Const olFormatPlain = 1
If Not Saved Then
Select Case MsgBox("'" & ThisWorkbook.Name & "' の変更内容を保存しますか?", vbExclamation + vbYesNoCancel)
Case vbYes
Application.EnableEvents = False
ThisWorkbook.Save
Application.EnableEvents = True
SavedFlg = True
Case vbNo
ThisWorkbook.Saved = True
Case vbCancel
Cancel = True
Exit Sub
End Select
End If
If Not ChangeFlg Then Exit Sub ' ← 追加
If Not SavedFlg Then Exit Sub
<以下略>
よろずやkinchan 様
度々のご回答ありがとうございました。
確認させて頂き思う通りの作動を確認致しました。
今回も含め、勉強させて頂き本当にありがとうございました!
No.2
- 回答日時:
こんばんは
ちゃちゃを入れるようで申し訳ないですが・・
ご提示の方式だと(BeforeCloseなので)、ちょこっと修正してそのまま閉じる(確認ダイアログの「保存」で更新保存する)と、修正していてもスルーされてしまいそうな気がしますけれど・・
ご回答ありがとうございます。
そうですね。
指定範囲の更新のみ処理がしたいのですが。。。
現状、追加してもスルーされてしまうので回避したいのですが。
範囲指定が無くても満足な作動しているのですが運用していく段階で
必要に迫られました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MAPI コンポーネントを使ったメ...
-
VB6にてメールを送信する方法
-
SoftBankにメール送信できない
-
画像アップ機能付の掲示板作成
-
PHP バックグラウンド処理
-
メールフォームの送信後の確認...
-
PHPで特定のURLにジャンプす...
-
phpinfo.phpを開くとファイルの...
-
MySQLデータ表示時の文字化け
-
PHPの文字化けに関して
-
パースエラーとは?
-
「クラウドにアップロード」」...
-
サーバーにアップすると文字化...
-
phpヒアドキュメントスクリプト...
-
ファイルのアップロードを簡単...
-
VBAでJPGサイズ変更
-
php5,MySQL5で文字化けが起こる
-
Wordpressでプラグイン内自作関...
-
CMS(特にXOOPS)の経験者の方...
-
Mb_Send_mailで文字化け
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループの中で mailItemObj.Disp...
-
VBでメールを送る時のSMT...
-
submitボタンの二重送信について
-
コマンドプロンプトで添付ファ...
-
HPの更新をしたら自動でメール...
-
存在しないメールアドレスかど...
-
SendMailがエラーを返さない
-
SMTPサーバの指定なしでメ...
-
VB6にてメールを送信する方法
-
ヒアドキュメントを利用してメ...
-
AccessのDoCmd.SendObjectについて
-
HTTP/1.1 200 OKを送信する方法
-
Bookを閉じて保存した時のみ実...
-
メーリングリストのスクリプト...
-
リファラが取得できない?
-
一定時間毎に同じ動作を繰り返...
-
<HTML>~入る タグ が無いから ...
-
javamailで220の応答が遅い
-
ランダムな文字列を生成しその...
-
VB.NETでフリーメールアドレス...
おすすめ情報