如何使用VBA附加所有工作表但首先在电子邮件中

一切

我有一本有 4 张纸的工作簿:

1st - 收件人电子邮件数据,例如TO, CC, Subject, 从 2nd 到 4th 我需要作为附件发送给收件人的工作表。

我编写了以下脚本。但是作为 VBA 初学者,我面临两个问题:

  1. “循环”还建议从第一个工作表发送第一个空行(我想在最后一封电子邮件详细信息中停下来);
  2. “ActiveWorkbook”发送所有工作表(我想跳过收件人和 VBA 脚本所在的第一个工作表);

我感谢每一个建议/评论,因为我已经学习了 3 个月的 VBA。先感谢您!

Sub ICO_Emails()
    Dim VSEApp As Object
    Dim VSEMail As Object
    Dim VSEText As String
    Dim Email_Send_To, Email_Cc, Email_Subject As String

    row_number = 1

    Do
        DoEvents
        row_number = row_number + 1
        Email_Send_To = Sheet1.Range("A" & row_number)
        Email_Cc = Sheet1.Range("B" & row_number)
        Email_Subject = Sheet1.Range("C" & row_number)
        On Error GoTo debugs
        Set VSEApp = CreateObject("Outlook.Application")
        Set VSEMail = VSEApp.CreateItem(0)
        'Email Body script
        VSEText = "<BODY style=font-size:14pt;font-family:Times New Roman>Dear all,<p>Test.<p></BODY>"
        'Email Signature
        With VSEMail
            .Display
        End With
        Signature = VSEMail.HTMLBody
        With VSEMail
            .To = Email_Send_To
            .CC = Email_Cc
            .Subject = Email_Subject
            .HTMLBody = VSEText & Signature
            .Attachments.Add ActiveWorkbook.FullName
            .Display
        End With
debugs:
    Loop Until Email_Send_To = ""
End Sub
汤姆

看看这个。这会复制您的工作簿并将其保存到用户的“临时”位置。然后在附加之前对工作簿的副本进行您想要的修改。

Sub ICO_Emails()
    Dim VSEApp As Object
    Dim VSEMail As Object
    Dim VSEText As String
    Dim Email_Send_To, Email_Cc, Email_Subject As String
    Dim wb As Workbook, nwb As Workbook

    Application.ScreenUpdating = False

    Set wb = ThisWorkbook
    wb.SaveCopyAs (Environ("temp") & "\temp_" & wb.Name)

    Set nwb = Workbooks.Open(Environ("temp") & "\temp_" & wb.Name)
    With nwb
        Application.DisplayAlerts = False
        ' Delete relevant sheet
        .Sheets(1).Delete
        Application.DisplayAlerts = True
        .Save
    End With

    row_number = 1

    Do
        DoEvents
        row_number = row_number + 1
        Email_Send_To = Sheet1.Range("A" & row_number)
        Email_Cc = Sheet1.Range("B" & row_number)
        Email_Subject = Sheet1.Range("C" & row_number)
        On Error GoTo debugs
        Set VSEApp = CreateObject("Outlook.Application")
        Set VSEMail = VSEApp.CreateItem(0)
        'Email Body script
        VSEText = "<BODY style=font-size:14pt;font-family:Times New Roman>Dear all,<p>Test.<p></BODY>"
        'Email Signature
        With VSEMail
            .Display
        End With
        Signature = VSEMail.HTMLBody
        With VSEMail
            .To = Email_Send_To
            .CC = Email_Cc
            .Subject = Email_Subject
            .HTMLBody = VSEText & Signature
            .Attachments.Add nwb.FullName
            .Display
        End With
debugs:
    Loop Until Email_Send_To = ""
    nwb.Close
    Application.ScreenUpdating = True
End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用 VBA 将特定工作表作为 csv 附加到电子邮件中

如何首先在Firebase中发送电子邮件验证,然后创建帐户?

替换所有捕获的组,但首先在 sed 中

如何首先在Node.js中执行所有控制台日志?

如何在不首先在Ruby中实例化的情况下获取所有子类的列表

通过电子邮件发送之前,删除工作表上的所有VBA代码

首先在路由表中插入忽略的路由

如何首先在Wicket中呈现<meta>标签?

如何从首先在php中重新启动循环

如何首先在实体框架代码中的 linq 中使用可为空列表?

AWS Lambda:如何使用必须首先在linux中安装的工具?

如何在发送电子邮件时在工作表中添加现有图表

使用mailcore(iOS),如何从特定电子邮件地址获取所有电子邮件?

如何使用某些电子邮件客户端下载所有原始电子邮件?

如何阻止PHP Mailer在每个电子邮件上附加所有电子邮件地址?

如何使用Excel VBA在Outlook中的共享电子邮件中阅读电子邮件

如何列出GMail中的所有电子邮件主题?

如何在一个查询中从所有表中获取所有电子邮件地址

c# - 如何通过实体框架代码的流畅API首先在c#中更改表名?

如何从mysql表中选择所有电子邮件并将其分配给$ to在php中的邮件功能?

如何首先在代码中获得具有外键关系的子实体中的父实体属性?

如何首先在Entity Framework代码中创建2个具有相同类型的dbset?

反应-如何在不首先在状态中定义的情况下使用动态属性更新状态?

循环浏览所有工作表,并与条件合并为一封电子邮件

如何使用VBA将创建的.pdf附加到电子邮件正文

使用字典提取电子邮件地址。某些键有多封电子邮件,如何发送到所有电子邮件?

使用VBA在工作表中发送包含地址的电子邮件

如何选择特定的谷歌表并附加为 PDF 以使用 MailApp 发送电子邮件

使用 Mysqli 在 HTML 中包含数据库表中所有值的动态 PHP 电子邮件