复制范围,包括粘贴到 Outlook 电子邮件正文时的格式

2023-12-04

我已经搜索了这个问题,但仍然没有得到它的确切代码。 我需要将数据透视表的颜色从 Excel 复制到 Outlook 主体。运行代码时,我得到了格式,但唯一的问题是表格的颜色变成了黑色和灰色。

请帮助我弄清楚如何放置我需要的确切颜色。

这是我的代码:

Sub AUTO_MAIL()
    Dim rng As Range, rng2 As Range, rng3 As Range, rng4 As Range, sub1 As Range, sub2 As Range, sub3 As Range, sub4 As Range
    Dim OutApp As Object
    Dim OutMail As Object

    Set rng = Nothing

    On Error Resume Next
    ' Only send the visible cells in the selection.
    Set rng = Sheets("Data Entry").PivotTables(1).TableRange1
    Set rng2 = Sheets("ACN Workflow").PivotTables(1).TableRange1
    Set rng3 = Sheets("L'Oreal Workflow").PivotTables(1).TableRange1
    Set rng4 = Sheets("MTD Volume").PivotTables(1).TableRange1
    Set sub1 = Sheets("Data Entry").Range("A1:E1").SpecialCells(xlCellTypeVisible)
    Set sub2 = Sheets("ACN Workflow").Range("A1:G1").SpecialCells(xlCellTypeVisible)
    Set sub3 = Sheets("L'Oreal Workflow").Range("A1:G1").SpecialCells(xlCellTypeVisible)
    Set sub4 = Sheets("MTD Volume").Range("A1:B1").SpecialCells(xlCellTypeVisible)



    If rng Is Nothing Then
        MsgBox "The selection is not a range or the sheet is protected. " & _
               vbNewLine & "Please correct and try again.", vbOKOnly
        Exit Sub
    End If

    With Application
        .EnableEvents = False
        .ScreenUpdating = False
    End With

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    On Error Resume Next
    With OutMail
        .To = ""
        .CC = ""
        .BCC = ""
        .Subject = "Step+ Volume Tracker, Data Entry/Workflow Ageing Report and Rejection Report |"
        .HTMLBody = "<b>Dear All,</b><br><br>" & "Please see below summary of invoices and links to the <b>Volume Tracker</b> and <b>Ageing Report</b> (Data Entry and Workflow).<br>" & RangetoHTML(sub4) & vbCrLf & RangetoHTML(rng4) & vbCrLf & RangetoHTML(sub3) & vbCrLf & RangetoHTML(rng3) & vbCrLf & RangetoHTML(sub2) & vbCrLf & RangetoHTML(rng2) & vbCrLf & RangetoHTML(sub1) & vbCrLf & RangetoHTML(rng)
        ' In place of the following statement, you can use ".Display" to
        ' display the e-mail message.
        .display
    End With
    On Error GoTo 0

    With Application
        .EnableEvents = True
        .ScreenUpdating = True
    End With

    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

Function RangetoHTML(rng As Range)
' Changed by Ron de Bruin 28-Oct-2006
' Working in Office 2000-2013
    Dim fso As Object
    Dim ts As Object
    Dim TempFile As String
    Dim TempWB As Workbook

    TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"

    'Copy the range and create a new workbook to past the data in
    rng.SpecialCells(xlCellTypeVisible).Copy
    Set TempWB = Workbooks.Add(1)
    With TempWB.Sheets(1)
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial xlPasteValues, , False, False
        .Cells(1).PasteSpecial xlPasteFormats, , False, False
        .Cells(1).Select
        Application.CutCopyMode = False
        On Error Resume Next
        .DrawingObjects.Visible = True
        .DrawingObjects.Delete
        On Error GoTo 0
    End With

    'Publish the sheet to a htm file
    With TempWB.PublishObjects.Add( _
         SourceType:=xlSourceRange, _
         Filename:=TempFile, _
         Sheet:=TempWB.Sheets(1).Name, _
         Source:=TempWB.Sheets(1).UsedRange.Address, _
         HtmlType:=xlHtmlStatic)
        .Publish (True)
    End With

    'Read all data from the htm file into RangetoHTML
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
    RangetoHTML = ts.readall
    ts.Close
    RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
                          "align=left x:publishsource=")

    'Close TempWB
    TempWB.Close savechanges:=False

    'Delete the htm file we used in this function
    Kill TempFile

    Set ts = Nothing
    Set fso = Nothing
    Set TempWB = Nothing
End Function

您必须稍微调整一下代码,它应该看起来像这样:

Sub due()

    Dim ol As Object 'Outlook.Application
    Dim olEmail As Object 'Outlook.MailItem
    Dim olInsp As Object 'Outlook.Inspector
    Dim wd As Object 'Word.Document
    Dim rCol As Collection, r As Range, i As Integer

     '/* if outlook is running use GO, create otherwise */
    Set ol = GetObject(Class:="Outlook.Application")
    Set olEmail = ol.CreateItem(0) 'olMailItem

    Set rCol = New Collection
    With rCol
        .Add Sheet1.Range("A1:B6") '/* add your ranges the same sequence */
        .Add Sheet2.Range("A1:B6") '/* as you want them added in the body */
    End With

    With olEmail
        .To = ""
        '/* bonus basic html */
        .HTMLBody = "<html><body style=""font-family:calibri"">" & _
                    "<p><b>Dear Deer,</b><br><br> She see seas." & _
                    "</p></body></html>"

        Set olInsp = .GetInspector
        If olInsp.EditorType = 4 Then 'olEditorWord
            Set wd = olInsp.WordEditor
            For i = 1 To rCol.Count '/* iterate all ranges */
                Set r = rCol.Item(i): r.Copy
                wd.Range.InsertParagraphAfter
                wd.Paragraphs(wd.Paragraphs.Count).Range.PasteAndFormat 16
                '16 - wdFormatOriginalFormatting
            Next
        End If
        wd.Range.InsertParagraphAfter
        wd.Paragraphs(wd.Paragraphs.Count).Range.Text = "Regards, Patricia"
        wd.Paragraphs.Last.Range.Sentences.Last.Font.Bold = True
        .Display
    End With

End Sub

如果您想做更多,您将需要阅读更多有关Word VBA.
这只是一个有关使用 Outlook 的 Word 编辑器执行哪些操作的示例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

复制范围,包括粘贴到 Outlook 电子邮件正文时的格式 的相关文章

随机推荐

  • 当许多客户端连接时,我的 socket.io 服务器开始随机断开客户端连接(由于“ping 超时”原因)

    我正在构建一个网站 我的客户端通过网络套接字与服务器进行通信 我在后端使用 Nodejs 因此使用著名的 socket io 库进行 Web 套接字通信 问题 1 到 40 个客户端一切正常 之后服务器开始随机断开客户端连接 一开始我认为这
  • 运行时添加到DAG的任务无法调度

    我的想法是有一个任务foo它生成输入列表 用户 报告 日志文件等 并为输入列表中的每个元素启动一个任务 目标是利用 Airflow 的重试和其他逻辑 而不是重新实现它 So ideally my DAG should look someth
  • 使用vba检查网络连接

    有没有办法在vba中检查网络连接 我正在使用这个命令 If Dir O Then MsgBox you have network connection Else MsgBox No Connection End If 但它不起作用 我收到运
  • auto it = vector.begin() 结果类型不可转换为 const_iterator

    容器需要提供iterator可以隐式转换为的类型const iterator 鉴于此 我正在尝试使用auto通过初始化一个对象vector begin 并使用该结果对象std distance其中 RHS 是const iterator 这
  • 如何在模态中传递当前行值?

    我正在表上执行 PHP CRUD 操作 当我单击编辑按钮而不是将其带到新页面时 我想在模式中显示值 我希望值以模态形式显示 我已经创建了一个模式 但我无法想出一种逻辑来传递单击编辑按钮的行的值 任何帮助将不胜感激 Table table c
  • Javascript -> 热键 -> 禁用输入字段

    好吧 我的热键可以工作 只是无法停止 document keypress function e if e which 13 Enter key is press do what you want else if e which 67 e w
  • 将按键绑定到使用 Visual Studio Code 中当前文件的 shell 命令

    有没有办法创建一个键绑定来在文件上执行 shell 命令 就像是 key ctrl shift e command run command touch file when editorTextFocus 我不想使用任务 因为这需要对于整个编
  • 在 Clojure 中调试? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 使用 repl 时调试 Clojure 代码的最佳方法是什么 还有 dotrace 它允许您查看所选函数的输入和输出 use clojure contrib trace defn
  • Tensorflow 对象检测在启动前被终止

    我正在运行 docker image tensorflow 1 1 0 我通过在本地克隆并为我的 docker 提供到该文件夹 的连接来添加tensorflow对象检测api github 我正在尝试重现他们的宠物例子 我相信我的所有代码和
  • Array.map + parseInt [重复]

    这个问题在这里已经有答案了 var timeSplit timeCaption innerText trim split 将产生一个数组 10 00 18 00 var startStr timeSplit 0 split 将产生一个数组
  • 如何从服务器异步检索图像

    我有一个NSMutableArray带有一些图像网址 图像的大小在 12KB 到 6MB 之间 我用AsycImageView类并实现 但是当大图像下载应用程序崩溃时 我在该类中为 maxsize 指定了 6 1024 1024 6MB 将
  • Woocommerce - 如果购物车中有特定变体,则隐藏付款方式

    在 Woocommerce 中 如果购物车中有特定产品变体 我想隐藏信用卡付款选项 请帮忙 Thanks 这就是我现在的工作 我为每个变体分配了一个单独的运输类别 我想在结帐时禁用特定的付款方式 但如果我可以定位特定的属性值 那就容易多了
  • 泽西岛的 GZip 编码

    我正在 Jersey 2 中编写 RESTful Web 服务 我想支持响应的 Gzip 编码 下列的这个答案 我启用了org glassfish jersey server filter EncodingFilter in my Reso
  • $展开空数组

    我有一个用户集合 其中每个文档都具有以下结构 id
  • 在快照视图中查找文件的本地副本

    我在一个工具中使用 ClearCase Automation Library CAL 它可以帮助我跟踪未集成的更改 现在我想扩展该工具 这样我也可以通过它进行签到 对于此功能 我需要找到快照视图的本地副本 虽然我可以询问 CC 哪个视图附加
  • .NET 的免费 UML 绘图库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在寻找一个免费的 NET C 库 我可以在我的程序中使用它并简单地绘制 UML 图 尤其是类图 我尝试使用 Netron 图表库 但它有点棘手
  • 尝试从私有 ECR 中提取图像时出现“没有基本身份验证凭据”

    我的 Dockerfile 中间有以下行 用于从我的私有 ECR 检索图像 FROM dkr ecr ap southeast 1 amazonaws com prod ff03401 这是我在尝试构建此代码时在 AWS Codebuild
  • 如何查找链接的标题文本

    如何在 jquery 中找到链接的标题文本 您可以使用attr找到title属性 var title jQuery a attr title replace a with your own selector
  • EF Core - System.InvalidOperationException:ExecuteReader 需要打开且可用的连接。连接的当前状态已关闭

    我正在使用 Entity Framework Core 运行 ASP NET Core 1 0 Web 应用程序 当应用程序运行一段时间 24 48 小时 时 应用程序在对任何端点或静态资源的每个请求上开始崩溃 并引发错误System In
  • 复制范围,包括粘贴到 Outlook 电子邮件正文时的格式

    我已经搜索了这个问题 但仍然没有得到它的确切代码 我需要将数据透视表的颜色从 Excel 复制到 Outlook 主体 运行代码时 我得到了格式 但唯一的问题是表格的颜色变成了黑色和灰色 请帮助我弄清楚如何放置我需要的确切颜色 这是我的代码