【问题标题】:Save multiple sheets to different workbooks and attach these to outlook using VBA将多个工作表保存到不同的工作簿并使用 VBA 将它们附加到 Outlook
【发布时间】:2013-03-15 12:17:02
【问题描述】:

我需要一个宏来完成以下工作:

我有一个 6 张工作簿。每个都有不同的名字。工作表名称为 ENT、GHD、T3 等。

我想复制每张工作表的内容并将其保存到具有不同名称以及日期 n 时间戳的不同工作簿中。

例如,表 ENT 必须保存为 XYZ 报告日期时间。 Xlsx 和此文件需要附加到 Outlook。

与 GHD 类似,文件名应为 ABC Report DATE TIME。 XLSX。 对于 T3 表和其余 3 张表也是如此。所有这些文件都将邮寄给不同的人。

问题是这些新文件必须保存到创建它的原始文件所在的文件夹中。

【问题讨论】:

  • 我们需要显示您迄今为止尝试过的代码以便提供帮助。
  • 到目前为止你尝试过什么?如果您首先展示自己的一点努力,您会得到更好的回应。将工作表复制到新工作簿相当简单。绝对支持通过电子邮件将单个工作表作为附件发送,并且也不是很困难。保存到已知/指定的目录是初学者的东西。

标签: excel vba outlook


【解决方案1】:

所以你想像下面这样循环遍历工作表:

for Each xSheet In activeworkbook.worksheets

然后使用工作表名称和工作簿路径调用 saveas 方法

xsheet.saveas activeworkbook.path & xSheet.Name & " Report " & vba.forma(now, "dd mmm yyyy hhmmss"), xlnormal

然后你想创建一个 Outlook 邮件项目,设置收件人、主题和附件,然后发送它...

这样您就可以开始了,然后您只需在引用中添加对 Outlook 应用程序的引用即可使用这些对象...

HTH

菲利普

【讨论】:

  • Philip 和 @Sam 需要你们的帮助
  • 我需要谁的帮助,为什么?
【解决方案2】:
Sub COMEON()
  Dim onePublishObject As PublishObject
  Dim oneSheet As Worksheet
  Dim scriptingObject As Object
  Dim outlookApplication As Object
  Dim outlookMail As Object
  Dim htmlBody As String
  Dim htmlFile As String
  Dim textStream, fil As String
  Dim dummy As Workbook


  Today = Format(Now(), "dd-mm-yyyy")

  Set dummy = ActiveWorkbook
  Set scriptingObject = CreateObject("Scripting.FileSystemObject")
  Set outlookApplication = CreateObject("Outlook.Application")
  For Each oneSheet In ActiveWorkbook.Worksheets




                                                        Dim StrBody As String
                                                        StrBody = " THIS IS A TEST" & " " & UCase(oneSheet.Name) & " " & "XYZ," & vbNewLine & _
                                                        vbNewLine & _
                                                        "Please FIND ATTACHED <B>'XYZ REPORT'<B>"





    Application.DisplayAlerts = False
    Sheets(oneSheet.Name).Copy
    ActiveWorkbook.SaveAs dummy.Path & "\" & oneSheet.Name & ".xlsx"
    ActiveWorkbook.Close
    Application.DisplayAlerts = True
    Set outlookMail = outlookApplication.CreateItem(0)
    With outlookMail
        .htmlBody = StrBody & htmlBody
        .attachments.Add dummy.Path & "\" & oneSheet.Name & ".xlsx"
        .Display
        .Subject = "XYZ Report" & " " & UCase(oneSheet.Name) & " " & "(" & Today & ")"

    End With
  Next oneSheet
End Sub

【讨论】:

  • 在上面的代码 1 中。我不知道如何为我的每张工作表命名。 2. 为每张不同的表格写不同的邮件,并发送给不同的人。 3. 我只想附上 7 张我的模板中的 5 张(这意味着 5 封不同的邮件)
  • 我没有收到任何错误。只是在上面的代码中 1. 我不知道如何为我的每张工作表命名。 2. 为每张不同的表格写不同的邮件,并发送给不同的人。 3. 我只想附上 7 张我的模板中的 5 张(这意味着 5 封不同的邮件)
猜你喜欢
  • 1970-01-01
  • 2016-02-26
  • 2020-10-30
  • 2014-11-21
  • 1970-01-01
  • 2023-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多