
現在、下記コードにて「ファイルを閉じて保存した際にメールを送信」を実行しております。
実行(処理)をするセル範囲除外を付け加えたいと思っております。(その範囲の更新はメールが飛ばない)
変数宣言?で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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mb_send_mailで複数宛てにtoで送信
-
java Mail で特殊文字が文字化...
-
存在しないメールアドレスかど...
-
phpのheader("Location:#pos")...
-
*.php、*.php3、*.phtmlの違い
-
phpのextension_dirを複数指定...
-
PHP PDOライブラリが読み込まれ...
-
phpでメール送信できません 原...
-
header(Location:~)で$_SESS...
-
<A href ~ と一緒に値を渡すには
-
さくらインターネットでメール...
-
【PHP】tmp_nameの命名規約につ...
-
php4とphp5での数値の取り扱い...
-
テレメールとは?
-
PHPでメールを受信するには?
-
データ送信をボタンを押さずに...
-
PEAR(Image_QRCode)のエラー
-
Apache 2.4でphp-5.3を使いたい...
-
セッションについての設定なの...
-
require_once()でファイルが読...
マンスリーランキングこのカテゴリの人気マンスリー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につきまして
おすすめ情報