Note: The other languages of the website are Google-translated. Back to English

如果在Excel中修改了某個單元格,該如何發送電子郵件?

本文討論的是在 Excel 中修改某個範圍內的單元格時通過 Outlook 發送電子郵件。

如果使用VBA代碼修改了某個範圍內的單元格,則發送電子郵件


如果使用VBA代碼修改了某個範圍內的單元格,則發送電子郵件

如果您需要在某個工作表中修改區域 A2:E11 中的單元格時自動創建附有活動工作簿的新電子郵件,以下 VBA 代碼可以幫助您。

1.在需要根據其修改後的單元格在一定範圍內發送電子郵件的工作表中,右鍵單擊工作表選項卡,然後單擊 查看代碼 從上下文菜單中。 看截圖:

2.在彈出 Microsoft Visual Basic for Applications 窗口,請將以下VBA代碼複製並粘貼到“代碼”窗口中。

VBA代碼:如果在Excel中修改了指定範圍內的單元格,則發送電子郵件

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 2017/9/12
    Dim xRgSel As Range
    Dim xOutApp As Object
    Dim xMailItem As Object
    Dim xMailBody As String
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set xRg = Range("A2:E11")
    Set xRgSel = Intersect(Target, xRg)
    ActiveWorkbook.Save
    If Not xRgSel Is Nothing Then
        Set xOutApp = CreateObject("Outlook.Application")
        Set xMailItem = xOutApp.CreateItem(0)
        xMailBody = "Cell(s) " & xRgSel.Address(False, False) & _
            " in the worksheet '" & Me.Name & "' were modified on " & _
            Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
            " by " & Environ$("username") & "."

        With xMailItem
            .To = "Email Address"
            .Subject = "Worksheet modified in " & ThisWorkbook.FullName
            .Body = xMailBody
            .Attachments.Add (ThisWorkbook.FullName)
            .Display
        End With
        Set xRgSel = Nothing
        Set xOutApp = Nothing
        Set xMailItem = Nothing
    End If
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

筆記:

1)。 在代碼中 A2:E11 是您將基於其發送電子郵件的範圍。
2)。 請根據需要更改電子郵件正文 郵件正文 代碼中的一行。
3)。 更換 電子郵件 收件人電子郵件地址在一行 .To =“電子郵件地址”.
4)。 更改電子郵件主題 .Subject =“工作表已在&ThisWorkbook.FullName中修改.

3。 按 其他 + Q 同時關閉按鍵 Microsoft Visual Basic for Applications 窗口。

從現在開始,將修改範圍A2:E11中的任何單元格,將創建一個新電子郵件,並附加更新的工作簿。 電子郵件中將列出所有指定的字段,例如主題,收件人和電子郵件正文。 請發送電子郵件。

備註: VBA 代碼僅在您使用 Outlook 作為電子郵件程序時才有效。


相關文章:


最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部
按評論排序
留言 (37)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
我被困在VB代碼下面。 我正在嘗試向數據已更改的用戶發送電子郵件通知。 電子郵件正在工作,但是當我立即發起任何更改時,電子郵件但我希望在對所有受影響的用戶進行所有更改後保存並關閉 Excel 工作表時發送電子郵件。 這也應該適用於整個 excel 工作簿中的任何工作表。

請幫助...

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,Cancel As Boolean)

'****對象和變量的聲明******

將 xRgSel 調暗為範圍 將 xOutApp 調暗為對象 將 xMailItem 調暗為對象 將 xMailBody 調暗為字符串 將 mailTo 調暗為字符串

在錯誤恢復下一頁

Sheets("TargetSheet").Range("TargetRange").Select

Application.ScreenUpdating = False Application.DisplayAlerts = False

'設置 xRg = Range("A" & Rows.Count).End(xlUp).Row

設置 xRg = Range("A2:DA1000")
設置 xRgSel = 相交(目標,xRg)


ActiveWorkbook.Save
'**********Outlook 應用程序打開***********

如果不是 xRgSel 什麼都不是,那麼

設置 xOutApp = CreateObject("Outlook.Application")
設置 xMailItem = xOutApp.CreateItem(0)

xMailBody = "單元格" & xRgSel.Address(False, False) & _
"在工作表 '" & Me.Name & "' 上修改了 " & _
Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
" by " & Environ$("用戶名") & "."
'***********查找收件人列表************

If Cells(xRgSel.Row, "A").Value = "Pankaj" Then

mailTo = "pank12***@gmail.com"

如果結束

If Cells(xRgSel.Row, "A").Value = "Nitin" Then

mailTo = "pank****@gmail.com"

如果結束

If Cells(xRgSel.Row, "A").Value = "Chandan" Then

mailTo = "pakxro**@gmail.com"

如果結束
'*************電子郵件撰寫*************

使用 xMailItem

.To = 郵件收件人
.Subject =“工作表已在&ThisWorkbook.FullName中修改
.Body = xMailBody
'.Attachments.Add (ThisWorkbook.FullName)
。顯示

結束

設置 xRgSel = 無
設置 xOutApp = 無
設置 xMailItem = 無

如果結束

Application.DisplayAlerts = True
Application.ScreenUpdating = True
END SUB
網站主持人對此評論進行了最小化
親愛的 Pankaj Shukla,
將您的 Excel 問題發佈到我們的論壇: https://www.extendoffice.com/forum.html 從我們的 Excel 專業人員那裡獲得有關 Excel 的更多支持。
網站主持人對此評論進行了最小化
我能夠創建宏,但是我遇到了問題。 我想在單元格達到某個閾值時自動發送電子郵件。 單元格是一個公式。 當計算總和低於所述閾值時,它不做任何事情; 但是,如果我直接在單元格中鍵入,它將按計劃處理宏。 公式會弄亂宏嗎?
網站主持人對此評論進行了最小化
嗨,娘娘腔瓊斯,
本文中的方法:Excel中如何根據單元格值自動發送電子郵件?
https://www.extendoffice.com/documents/excel/4656-excel-send-email-based-on-cell-value.html 可以幫助您解決問題。
網站主持人對此評論進行了最小化
親愛的管理員,


我需要你的幫助,



我有一個 excel 來監控我們的現場工作人員完成的日常工作細節,所以如果那個人未能在給定時間更新該 excel 表中的數據,這可能會觸發來自 excel 表的郵件。
網站主持人對此評論進行了最小化
嗨,
對此無能為力。
網站主持人對此評論進行了最小化
如果我想發送單元格值而不是地址..那麼我應該在代碼中更改什麼?
網站主持人對此評論進行了最小化
嗨,
您可以嘗試以下 VBA 代碼。

Private Sub Worksheet_Change(ByVal Target As Range)
將 xRgSel 調暗為範圍
將 xOutApp 調暗為對象
將 xMailItem 調暗為對象
將 xMailBody 調暗為字符串
在錯誤恢復下一頁
Application.ScreenUpdating = False
Application.DisplayAlerts = False
設置 xRg = Range("A2:E11")
設置 xRgSel = 相交(目標,xRg)
ActiveWorkbook.Save
如果不是 xRgSel 什麼都不是,那麼
設置 xOutApp = CreateObject("Outlook.Application")
設置 xMailItem = xOutApp.CreateItem(0)
xMailBody = "單元格" & xRgSel.Address(False, False) & _
xRgSel.Value & _
"在工作表 '" & Me.Name & "' 上修改了 " & _
Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
" by " & Environ$("用戶名") & "."

使用 xMailItem
.To =“電子郵件地址”
.Subject =“工作表已在&ThisWorkbook.FullName中修改
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
。顯示
結束
設置 xRgSel = 無
設置 xOutApp = 無
設置 xMailItem = 無
如果結束
Application.DisplayAlerts = True
Application.ScreenUpdating = True
END SUB
網站主持人對此評論進行了最小化
如果我們只想要該單元格中的更新評論而不是整個單元格值怎麼辦 它應該只顯示單元格中添加的最新評論
網站主持人對此評論進行了最小化
你知道了嗎?
網站主持人對此評論進行了最小化
很棒的信息。
關於可以添加到電子郵件中的信息的問題。
使用上面的示例....

如果您在 F4 中有一個值,您將如何在修改 D4 時生成的電子郵件中包含 F4 值?
網站主持人對此評論進行了最小化
如果我必鬚髮送整行呢?
網站主持人對此評論進行了最小化
我已經嘗試過上面的 VBA 代碼:如果在 Excel 中修改了指定範圍內的單元格,則發送電子郵件。 這個 VBA 對我有用,除了發送電子郵件。 當在給定範圍內修改數據時,會自動生成一封電子郵件,其中包含修改後的單元格詳細信息。 但是,電子郵件不會自動發送給收件人,用戶必須單擊電子郵件中的發送按鈕。 我在這裡看到的是,電子郵件必須在生成時自動發送給收件人。 請幫我提供一個代碼。 非常感謝
網站主持人對此評論進行了最小化
嗨吉米約瑟夫,
請將“.Display”行替換為“.Send”。 希望我能幫上忙。 感謝您的評論。
網站主持人對此評論進行了最小化
你好; 有沒有辦法使用來自其他單元格的信息(從第一行和第一列)更改顯示的文本? 例如,如果我更改單元格 K15,我想在單元格 A15 和 K1 的消息信息中包含? 我應該在代碼中更改什麼? 非常感謝你
網站主持人對此評論進行了最小化
嗨,勞娜。 你知道怎麼做嗎?
網站主持人對此評論進行了最小化
你好。 如果編輯了另一個單元格範圍,如何修改代碼以便將電子郵件發送到另一個電子郵件地址?
網站主持人對此評論進行了最小化
對此請求有任何幫助嗎? 我有同樣的問題。 我想每行添加多個電子郵件地址,但是當我更改一行時,整個工作表都會更改。 如何將更改限制在一行?
網站主持人對此評論進行了最小化
編輯線:
1)。 在代碼中,A2:E11 是您發送電子郵件所依據的範圍。

3)。 將電子郵件地址替換為 .To = "Email Address" 行中的收件人電子郵件地址。

工作正常。
網站主持人對此評論進行了最小化
您能否進一步解釋一下。 您如何根據正在修改的另一個範圍重複代碼以發送到不同的電子郵件。 我已嘗試複製並粘貼下面的代碼並根據您的評論進行更改,但仍然只有第一個範圍似乎執行命令並編寫電子郵件。
網站主持人對此評論進行了最小化
有人對此有答案嗎?
網站主持人對此評論進行了最小化
您好,我試圖使用工作表上更改的一個值在工作表上發送電子郵件。 如果在 H 列,狀態將更改為 =“4”,則左側的訂單 ID 應發送給一位用戶。 該表是動態工作的,所以我有一個從 D9:D140 開始的範圍,其中存儲了訂單 ID,狀態更改在 H9:H140 的同一範圍內進行。 當狀態更改為 ="4" 時,我怎樣才能達到這樣做的目標並將訂單 ID 發送給我的客戶?
網站主持人對此評論進行了最小化
是否可以在同一列的 xMailBody 中顯示不同的參考單元格而不是修改後的單元格地址?
網站主持人對此評論進行了最小化
嗨Sam,你的意思是在修改單元格地址的同一列中隨機選擇一個引用單元格?還是在代碼的xMailBody行手動輸入一個引用單元格?在代碼中手動輸入一個引用單元格很容易,只需用雙引號將參考單元格括起來,如下所示: xMailBody = "Cell(s) " & “D3” & ", " & “D8” &_

網站主持人對此評論進行了最小化
是否可以更改此設置,以便僅在範圍內的單元格更改為“是”時才顯示電子郵件。 如果它有任何其他價值,希望它什麼也不做。
網站主持人對此評論進行了最小化
感謝您提供代碼,當我輸入值並按 Enter 時,此代碼有效。 但在我的情況下,單元格會自動填充公式,當達到該值時,它不會打開電子郵件,因此代碼在這種情況下不起作用。 先感謝您!
網站主持人對此評論進行了最小化
嗨,哈卡納,
以下 VBA 代碼可以幫助您解決問題。 請試一試。 感謝您的反饋意見。

Private Sub Worksheet_Change(ByVal Target As Range)
'更新者 Extendoffice 2022/04/15
將 xRgSel 調暗為範圍
將 xOutApp 調暗為對象
將 xMailItem 調暗為對象
將 xMailBody 調暗為字符串
將 xBoolean 調暗為布爾值
將 xItsRG 調暗為範圍
將 xDD 調暗為範圍
將 xDs 調暗為範圍
在錯誤恢復下一頁
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xBoolean = 假
設置 xRg = Range("E2:E13")

設置 xItsRG = 相交(目標,xRg)
設置 xDDs = Intersect(Target.DirectDependents, xRg)
設置 xDs = Intersect(Target.Dependents, xRg)
如果不是(xItsRG 什麼都不是)那麼
設置 xRgSel = xItsRG
x布爾 = 真
ElseIf Not (xDDs is nothing) Then
設置 xRgSel = xDDs
x布爾 = 真
ElseIf Not (xDs is nothing) Then
設置 xRgSel = xDs
x布爾 = 真
如果結束


ActiveWorkbook.Save
如果 xBoolean 那麼
調試打印 xRgSel.Address


設置 xOutApp = CreateObject("Outlook.Application")
設置 xMailItem = xOutApp.CreateItem(0)
xMailBody = "單元格" & xRgSel.Address(False, False) & _
"在工作表 '" & Me.Name & "' 上修改了 " & _
Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
" by " & Environ$("用戶名") & "."

使用 xMailItem
.To =“電子郵件地址”
.Subject =“工作表已在&ThisWorkbook.FullName中修改
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
。顯示
結束
設置 xRgSel = 無
設置 xOutApp = 無
設置 xMailItem = 無
如果結束
Application.DisplayAlerts = True
Application.ScreenUpdating = True
END SUB
網站主持人對此評論進行了最小化
您好,我創建了一個類似的代碼,但我想 *** 一個條件,如果一個單元格值被刪除,則在保存/關閉時不會發送電子郵件。 它只會在輸入單元格值時發送電子郵件。 你知道怎麼做嗎? 這是我的代碼:

更新 Excel 工作簿時自動向某人發送電子郵件的代碼

表代碼:

Option Explicit 'Excel 工作表更改事件範圍
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C3:D62")) 什麼都不是
'目標.EntireRow.Interior.ColorIndex = 15
範圍(“XFD1048576”)。值 = 15
如果結束
If Not Intersect(Target, Range("I3:J21")) 什麼都不是
'目標.EntireRow.Interior.ColorIndex = 15
範圍(“XFD1048576”)。值 = 15
如果結束
END SUB


工作簿代碼:

Private Sub Workbook_BeforeClose(取消為布爾值)
如果 Me.Saved = False 那麼 Me.Save

將 xOutApp 調暗為對象
將 xMailItem 調暗為對象
將 xName 調暗為字符串

如果 Range("XFD1048576").Value = 15 那麼
在錯誤恢復下一頁
設置 xOutApp = CreateObject("Outlook.Application")
設置 xMailItem = xOutApp.CreateItem(0)
xName = ActiveWorkbook.FullName
使用 xMailItem
.To =“電子郵件”
.CC =“”
.Subject = "消息"
.Body = "消息!"
.Attachments.*** xName
。顯示
'。發送
結束
如果結束
設置 xMailItem = 無
設置 xOutApp = 無



END SUB

私人子工作簿_打開()
範圍(“XFD1048576”)。清除
END SUB
網站主持人對此評論進行了最小化
大家好,

der Code würde gut für mein Vorhaben passen, aber gibt es die Möglichkeit, dass er eine E-Mail beim speichern schreibt mit allen Zellen die geändert wurden? So wie es jetzt ist ,würde er jede geänderte Zelle einzeln senden。 Dies ist dann problematisch wenn zB 10 Zellen angepasst werden was 10 E-Mails bedeuten würde。 Und gibt es die Möglichkeit, die gesamte geänderte Zelle bei mir von A bis Y in einer E-Mail zu senden? Bisher haut der ja die Zellnummer in die E-Mail, wenn aber jemand anders Filtert wird er die Änderung nicht mehr finden。
網站主持人對此評論進行了最小化
嗨,Esser123,
以下 VBA 代碼可以提供幫助。 修改指定範圍內的單元格並保存工作簿後,會彈出一封電子郵件,列出電子郵件正文中所有修改的單元格,並且工作簿也將作為附件插入到電子郵件中。 請按照以下步驟操作:
1. 打開包含要發送電子郵件的單元格的工作表,右鍵單擊工作表選項卡,然後單擊 查看代碼 從右鍵菜單中。 然後將以下代碼複製到工作表(代碼)窗口中。
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220921
Dim xAddress As String
Dim xDRg, xRgSel, xRg As Range

xAddress = "A1:A8"
Set xDRg = Range(xAddress)
Set xRgSel = Intersect(Target, xDRg)
On Error GoTo Err1
If Not xRgSel Is Nothing Then
If ThisWorkbook.gChangeRange = "" Then
ThisWorkbook.gChangeRange = xRgSel.AddressLocal(False, False, xlA1, True, False)
Else
Set xRg = Range(ThisWorkbook.gChangeRange)
Set xRg = Application.Union(xRg, xRgSel)
ThisWorkbook.gChangeRange = xRg.AddressLocal(False, False, xlA1, True, False)
End If
End If
Exit Sub
Err1:
      ThisWorkbook.gChangeRange = xRgSel.AddressLocal(False, False, xlA1, True, False)
End Sub

2. 在 Visual Basic 編輯器中,雙擊 的ThisWorkbook 在左側窗格中,然後將以下 VBA 代碼複製到 本工作簿(代碼) 窗口。
Option Explicit
Public gChangeRange As String
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Updated by Extendoffice 20220921
Dim xRgSel, xRg As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xMailBody As String
'On Error Resume Next
On Error GoTo Err1
Set xRg = Range(gChangeRange)
If Not xRg Is Nothing Then
   Set xOutApp = CreateObject("Outlook.Application")
        Set xMailItem = xOutApp.CreateItem(0)
        xMailBody = "Email Body: " & vbCrLf & "The following cells were modified:" & xRg.Address(False, False)
        With xMailItem
            .To = "Email Address"
            .Subject = "Worksheet modified in " & ThisWorkbook.FullName
            .Body = xMailBody
            .Attachments.Add (ThisWorkbook.FullName)
            .Display
        End With
        Set xRgSel = Nothing
        Set xOutApp = Nothing
        Set xMailItem = Nothing
End If
Err1:
gChangeRange = ""
End Sub
網站主持人對此評論進行了最小化
我需要一些幫助來觸發一封稍有改動的電子郵件。 B列中的單元格將更改為由該行其他單元格中的公式觸發的“Y”,而不是數值或手動將信息輸入單元格。 B 列的公式是 =IF([@[Quantity in Stock]]>[@[Reorder Level]],,"Y"),表示庫存不足,需要重新訂購。 當 B 列中的單元格值更改為“Y”時,我需要觸發一封自動電子郵件,因此我會通過電子郵件自動通知我庫存不足。 我已經嘗試了所有我能想到的更改已經提供的代碼,但似乎沒有什麼對我有用......請幫助!
網站主持人對此評論進行了最小化
嗨凱瑟琳 F,
以下 VBA 代碼可以幫助您解決問題。 請試一試。 感謝您的評論。
Dim xRg As Range
'Update by Extendoffice 20221019
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("B:B"), Target)
If xRg Is Nothing Then Exit Sub
If Target.Value = "Y" Then
Call Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hi there" & vbNewLine & vbNewLine & _
"This is line 1" & vbNewLine & _
"This is line 2"
On Error Resume Next
With xOutMail
.To = "Email Address"
.CC = ""
.BCC = ""
.Subject = "send by cell value test"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub

Private Sub Worksheet_Calculate()
Dim xTarget As String
Dim xRg As Range
'Set xRg = Application.Range("B:B")
Set xRg = Intersect(Range("B:B"), Selection.EntireRow)
On Error GoTo Err01
If xRg.Value = "Y" Then
Call Mail_small_Text_Outlook
End If
Err01:
End Sub
網站主持人對此評論進行了最小化
您好,感謝您的本教程。
J'ai cependant une difficulté pour l'application de la plage de recherche。
Dans le code, j'ai demandé à vérifier la plage C2:C4。
Tout fonctionne bien si je modifie C2、C3 或 C4 唯一性。 Cela fonctionne aussi si je modifie C2+C3+C4 或 C2+C3 或 C3+C4 mais cela ne fonctionne pas si j'ai un saut dans la plage。 例如,si je modifie C2 et C4 無修飾符 C3。
Est-ce que quelqu'un pourrait m'aider pour m'indiquer où se trouve mon erreur ?
Merci d'avance。

Private Sub Worksheet_Change(ByVal Target As Range)
'更新者 Extendoffice 20220921
將 xAddress 變暗為字符串
將 xDRg、xRgSel、xRg 調暗為範圍

xAddress = "C2:C4"
設置 xDRg = Range(xAddress)
設置 xRgSel = 相交(目標,xDRg)
出錯時轉到 Err1
如果不是 xRgSel 什麼都不是,那麼
如果 ThisWorkbook.gChangeRange = "" 那麼
ThisWorkbook.gChangeRange = xRgSel.AddressLocal(假,假,xlA1,真,假)
其他
設置 xRg = Range(ThisWorkbook.gChangeRange)
設置 xRg = Application.Union(xRg, xRgSel)
ThisWorkbook.gChangeRange = xRg.AddressLocal(假,假,xlA1,真,假)
如果結束
如果結束
退出小組
錯誤1:
ThisWorkbook.gChangeRange = xRgSel.AddressLocal(假,假,xlA1,真,假)
END SUB


-----

Option Explicit
公共 gChangeRange 作為字符串
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'更新者 Extendoffice 20220921
將 xRgSel、xRg 調暗為範圍
將 xOutApp 調暗為對象
將 xMailItem 調暗為對象
將 xMailBody 調暗為字符串
'錯誤繼續下一步
出錯時轉到 Err1
設置 xRg = Range(gChangeRange)
如果不是 xRg 什麼都不是,那麼
設置 xOutApp = CreateObject("Outlook.Application")
設置 xMailItem = xOutApp.CreateItem(0)
xMailBody = "Cher Jean-Marie, " & vbCrLf & vbCrLf & "Dans le fichier : " & ThisWorkbook.FullName & vbCrLf & "La plage de cellules a été modifiée :" & xRg.Address(False, False) & vbCrLf & vbCrLf &“親切”
使用 xMailItem
.To = "x.xxxxxx@xxxx.fr"
.Subject = "Données modifiées" & ThisWorkbook.Name
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
。顯示
結束
設置 xRgSel = 無
設置 xOutApp = 無
設置 xMailItem = 無
如果結束
錯誤1:
gChangeRange = ""
END SUB
網站主持人對此評論進行了最小化
我想將電子郵件發送給 5 個人。 每個電子郵件地址之間使用什麼分隔符?
網站主持人對此評論進行了最小化
你好,Joe,
請使用分號分隔電子郵件地址。
網站主持人對此評論進行了最小化
這是另一個問題。 如果一個單元格發生變化,它會發送一封電子郵件。 如果 3 個單元格發生變化,它會發送 3 封電子郵件。 您如何阻止這種情況,以便在編輯完成後僅發送 1 封電子郵件?
網站主持人對此評論進行了最小化
你好,Joe,
假設您在代碼中將範圍指定為“A2:E11”。 我如何驗證整個編輯何時完成?
這裡還沒有評論
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護