Excel VBA脚本将太多信息导入到电子邮件中

问题描述 投票:0回答:1

我有一个电子表格,其中包含我需要循环浏览的电子邮件和信息列表。电子表格表的列结构如下:

Email | Irrelevant Information | Relevant Information

我遇到的问题是我只希望在电子邮件正文中发送相关的信息单元(附加到某些文本的结尾)。我在网上找到了一些可以修改的代码,并且大多数情况下都可以运行。最初,整个电子表格都被添加到每封电子邮件中,但是现在它在.Introduction文本下添加了整行。

Sub EmailRange()

Dim WorkRng As Range
For i = 2 To n 'skip column headers
    On Error Resume Next
    Set WorkRng = Worksheets("Sheet1").Rows(i)
    Application.ScreenUpdating = False
    WorkRng.Select
    ActiveWorkbook.EnvelopeVisible = True
        With ActiveSheet.MailEnvelope
                .Introduction = "Text" + Worksheets("Sheet1").Cells(i, 3).Value 'append relevant info to text
                .Item.To = Worksheets("Sheet1").Cells(i, 1) 'cycling through each email
                .Item.Subject = "Subject"
                .Item.send
        End With
Application.ScreenUpdating = False
Next i
End Sub

我尝试过的事情:

  1. 删除范围定义。这将导致脚本恢复为附加整个工作表。
  2. 将范围设置为相关信息单元格。整行仍在添加到邮件中。
  3. 将ActiveSheet.MailEnvelope更改为ActiveCell.MailEnvelope。编译正常,但不发送电子邮件。
excel vba outlook-vba
1个回答
0
投票

我通过在模块顶部添加Option Explicit来进行重构(强烈建议使用任何代码)。我将n定义为最后一行,这是一个假设。我还使用&来连接简介的文本。经过测试并有效。

Option Explicit
Sub EmailRange()
    Dim i As Long
    Dim n As Long
    n = Sheet1.Cells(Sheet1.Rows.Count, "A").End(xlUp).Row

Dim WorkRng As Range
    For i = 2 To n 'skip column headers
        'On Error Resume Next
        Set WorkRng = Worksheets("Sheet1").Rows(i)
        Application.ScreenUpdating = False
        WorkRng.Select
        ActiveWorkbook.EnvelopeVisible = True
            With ActiveSheet.MailEnvelope
                    .Introduction = "Text" & Worksheets("Sheet1").Cells(i, 3).Value 'append relevant info to text
                    .Item.To = Worksheets("Sheet1").Cells(i, 1) 'cycling through each email
                    .Item.Subject = "Subject"
                    .Item.send
            End With
    Application.ScreenUpdating = False
Next i
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.