VBA - 基于单元格数据通过Outlook发送电子邮件

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

我一直在努力为此编写代码,所以如果有人可以帮我在excel中创建一个宏,我会很高兴。我希望通过基于Outlook的关于我添加到excel的数据发送大量用户访问凭据。具体来说,我有两个工作表:

1)电子邮件信息(全部静态)

这包含:

  • 电子邮件主题C5中的主​​题
  • Cell C6中的电子邮件正文(基本上这表示你好,你的用户凭据如下)
  • Cell C7中的其他电子邮件正文(此部分会说“如果您有任何问题,请告诉我们”。)C6和C7单元格当然可以更新为包含任何语言

2)用户信息(用户数量可能有所不同)

这包含:

  • A栏 - 名字
  • B栏 - 姓氏
  • C栏 - 全名(不是真的需要)
  • D栏 - 电子邮件地址
  • E栏 - 密码

理想情况下,宏将能够查看用户信息,并使用以下格式为D列中的每个电子邮件地址创建一个新的单独的Outlook电子邮件:

  • 电子邮件收件人:单元格D2中的电子邮件地址,直到上一封电子邮件(用户信
  • 电子邮件主题:电子邮件信息工作表中的单元格C5
  • “Hi”用户信息工作表中A列的Firstname值
  • 从电子邮件信息工作表中的单元格C6发送电子邮件正文部分
  • 用户名:D列中的电子邮件地址(与电子邮件收件人相同)
  • 密码:来自用户信息工作表中的E列
  • 电子邮件信息工作表中的单元格C7的电子邮件正文PArt 2

希望有人有时间帮助我。

提前致谢!!

编辑

谢谢你的帮助,巴里。这是我的代码,因为我正在尝试引用两个不同的工作表。你能让我知道我做错了什么吗?

Sub GenerateEmail()
Dim sEmailBodyp1 As String
Dim sEmailBodyp2 As String
Dim sEmailSubject As String
Dim sEmailTo As String
Dim sFirstName As String
Dim sPassword As String
Dim OutApp As Object
Dim OutMail As Object
Dim EmailSheet As Worksheet
Dim UserSheet As Worksheet
Dim UsedRange As Range

Set EmailSheet = Sheets("Email Information")
Set UserSheet = Sheets("User Information")
Set sEmailSubject = EmailSheet.Cells("C5")
Set sEmailBodyp1 = EmailSheet.Cells("C6")
Set sEmailBodyp2 = EmailSheet.Cells("C7")
Set UsedRange = UserSheet.UsedRange

For Each Row In UsedRange.Rows
    sFirstName = Row.Columns(1)
    sEmailTo = Row.Columns(4)
    sPassword = Row.Columns(5)
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With OutMail
        .To = sEmailTo
        .Subject = sEmailSubject
        .Body = "Hi " + sFirstName + "," + vbCrLf + vbCrLf + sEmailBodyp1 + vbCrLf + vbCrLf + "Username: " + sEmailTo + vbCrLf + "Password: " + sPassword + vbCrLf + vbCrLf + sEmailBodyp2
        .Display
    End With

    Set OutMail = Nothing
Next

Set OutApp = Nothing

结束子

excel vba excel-vba
1个回答
0
投票

根据讨论,这是我对此解决方案的编辑。

Excel宏

Public Sub GenerateEmail()
Dim sEmailBodyp1 As String
Dim sEmailBodyp2 As String
Dim sEmailSubject As String
Dim sEmailTo As String
Dim sFirstName As String
Dim sPassword As String
Dim OutApp As Object
Dim OutMail As Object
Dim EmailSheet As Worksheet
Dim UserSheet As Worksheet
Dim UsedRange As Range

Set EmailSheet = Sheets("Email Information")
Set UserSheet = Sheets("User Information")

sEmailSubject = EmailSheet.Range("C5").Value
sEmailBodyp1 = EmailSheet.Range("C6").Value
sEmailBodyp2 = EmailSheet.Range("C7").Value

Set UsedRange = UserSheet.UsedRange

For Each Row In UsedRange.Rows.Offset(1, 0).Resize(UsedRange.Rows.Count - 1, UsedRange.Columns.Count)

        sFirstName = Row.Columns(1)
        sEmailTo = Row.Columns(4)
        sPassword = Row.Columns(5)
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)

        With OutMail
            .To = sEmailTo
            .Subject = sEmailSubject
            .Body = "Hi " + sFirstName + "," + vbCrLf + vbCrLf + sEmailBodyp1 + vbCrLf + vbCrLf + "Username: " + sEmailTo + vbCrLf + "Password: " + sPassword + vbCrLf + vbCrLf + sEmailBodyp2
            .Display
        End With

        Set OutMail = Nothing

Next

Set OutApp = Nothing
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.