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应用程序 窗口,请将以下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应用程序 窗口。

从现在开始,将修改范围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.保存
'**********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 =真
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 代码。

私人子Worksheet_Change(按目标的ByVal目标)
将 xRgSel 调暗为范围
将 xOutApp 调暗为对象
将 xMailItem 调暗为对象
将 xMailBody 调暗为字符串
出错时继续下一步
Application.ScreenUpdating = False
Application.DisplayAlerts = False
设置 xRg = Range("A2:E11")
设置 xRgSel = 相交(目标,xRg)
ActiveWorkbook.保存
如果不是 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 =真
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.保存
如果 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 =真
END SUB
该评论由网站上的主持人最小化
您好,我创建了一个类似的代码,但我想 *** 一个条件,如果一个单元格值被删除,则在保存/关闭时不会发送电子邮件。 它只会在输入单元格值时发送电子邮件。 你知道怎么做吗? 这是我的代码:

更新 Excel 工作簿时自动向某人发送电子邮件的代码

表代码:

Option Explicit 'Excel 工作表更改事件范围
私人子Worksheet_Change(按目标的ByVal目标)
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

私有子 Workbook_Open()
范围(“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 ?
谢谢你在前进。

私人子Worksheet_Change(按目标的ByVal目标)
'更新者 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


-----

选项显式
公共 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 个人。 每个电子邮件地址之间使用什么分隔符?
该评论由网站上的主持人最小化
嗨乔,
请使用分号分隔电子邮件地址。
该评论由网站上的主持人最小化
这是另一个问题。 如果一个单元格发生变化,它会发送一封电子邮件。 如果 3 个单元格发生变化,它会发送 3 封电子邮件。 您如何阻止这种情况,以便在编辑完成后仅发送 1 封电子邮件?
该评论由网站上的主持人最小化
嗨乔,
假设您在代码中将范围指定为“A2:E11”。 我如何验证整个编辑何时完成?
这里还没有评论
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点

关注我们

版权所有 © 2009 - extendoffice.com。 | 版权所有。 供电 ExtendOffice。 | 网站地图
Microsoft和Office徽标是Microsoft Corporation在美国和/或其他国家的商标或注册商标。
受Sectigo SSL保护