【问题标题】:Copying and pasting from Excel to Outlook从 Excel 复制和粘贴到 Outlook
【发布时间】:2021-08-23 19:44:48
【问题描述】:

通过使用VBA,如果条件(大于数字2)在列“D”上为真,如何将Outlook电子邮件发送到保存在列“C”中的代理电子邮件,因此电子邮件将发送到保存在列单元格中的电子邮件同一行中的“C”表示电子邮件,D 表示条件?

例如:

Outlook 电子邮件的正文:

嗨!

您有未决报价,其编号

Dim valueForSubject as String, xRg As Range
'CYRIL ADDED valueForSubject ABOVE

'Update by Extendoffice 2018/3/7
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target.Cells.Count > 1 Then Exit Sub
  Set xRg = Intersect(Range("D2:D1000"), Target)
    If xRg Is Nothing Then Exit Sub
    If IsNumeric(Target.Value) And Target.Value > 2 Then
        valueForSubject = Target.Value 'CYRIL ADDED, UNSURE OF ACTUAL VALUE
        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 & _
              "You have pending quotation which its number" 
    On Error Resume Next
    With xOutMail
        .To = Target.Value
        .CC = ""
        .BCC = ""
        .Subject = valueForSubject & " other words" 'CYRIL ADDED, UNSURE OF OTHER WORDS WITHIN SUBJECT
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

.

.................................................. ..........

【问题讨论】:

  • 使用一个以字符串为维度的全局变量来捕获该值,然后您可以通过您的电子邮件子例程引用所述变量。
  • @Cyril,你能写下你上面所说的代码吗?因为我没有完全理解。
  • 您尝试了我提供的代码,结果如何?我看到您对我的回复中的To: 行进行了一项更改,您已经注意到您希望添加其他条件......那在哪里?

标签: excel vba outlook


【解决方案1】:

对评论的响应,使用另一个全局变量来捕获字符串,然后在电子邮件生成中使用所述 gvar:

Dim valueForSubject as String, xRg As Range
'CYRIL ADDED valueForSubject ABOVE

'Update by Extendoffice 2018/3/7
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target.Cells.Count > 1 Then Exit Sub
  Set xRg = Intersect(Range("D2:D1000"), Target)
    If xRg Is Nothing Then Exit Sub
    If IsNumeric(Target.Value) And Target.Value > 2 Then
        valueForSubject = Target.Value 'CYRIL ADDED, UNSURE OF ACTUAL VALUE
        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 & _
              "You have pending quotation which its number" 
    On Error Resume Next
    With xOutMail
        .To = "Email Address"
        .CC = ""
        .BCC = ""
        .Subject = valueForSubject & " other words" 'CYRIL ADDED, UNSURE OF OTHER WORDS WITHIN SUBJECT
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

【讨论】:

  • 您已经复制了条件单元格,但我的目标是复制并过去;例如;基于条件的单元格 A7 应用于同一行内的单元格 D7。但是,您按照我的示例复制了条件为 D7 的单元格。能否请您指教。
  • @AhmedThakaaAl-Mubarak 以上就是一个例子。您需要确定您的条件,如果您希望 D7Cells(Target.Row,Target.Column-1).Value 更具动态性,则将留给 Target.Value 变为 Cells(7,4).Value
  • 谢谢,我正在向你学习。我想我需要向你解释更多。因为上面的评论对我不起作用。您能否申请整个代码 snap 。该条件适用于 D 列,如果条件为真,则 C 列中的电子邮件将被复制到发送至 Outlook
  • @AhmedThakaaAl-Mubarak 您能否更新帖子以包含您根据反馈生成和测试的新代码?这将有很大帮助,并且会使附加请求更有意义。
  • @Cyril,我的帖子是用你的代码编辑的,请指教
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-26
  • 2015-02-06
  • 1970-01-01
相关资源
最近更新 更多