复制范围,包括粘贴到 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 电子邮件正文时的格式 的相关文章

  • VBA删除列中的单元格并根据单元格的值左移?

    如果单元格为空 如何删除 B 列 和左移 中的单元格 下面是我所拥有的 但它给出了 应用程序定义或对象定义的错误 Sub DeleteCellShiftLeft For i 1000 To 1 Step 1 If Cells i B Val
  • 我可以通过 vba 设置 Excel Power Query 的用户名和密码吗?

    我正在尝试设置一个电子表格 供其他人使用 通过 Power Query 更新表 当另一个用户使用电子表格时 他们会被要求 3 次输入用户名和密码 因为我有 3 个表正在更新 如何通过 VBA 为每个用户设置这些 我尝试将连接设置为匿名 但他
  • 尝试使用 Excel 中的 VBA 从网页中提取一个值

    我几天来一直在尝试查找信息 但是我找到的所有示例都只有一小段代码 我需要全部 我想要做的是从主页中提取一个值并将其放入 Excel 的单元格中 然后从同一站点上的另一个页面获取另一个值并放入下一个单元格等 该页面是瑞典证券交易所页面 我用作
  • 在 Excel VBA 中,如何访问存储在已安装的加载项中的子项?

    我已经创建了一个 Excel 加载项 该加载项中有一些模块 假设 module1 是其中之一 在 module1 中 我有一个 sub 声明为 public sub abc end sub 在我的工作簿中 我希望能够使用外接程序中定义的函数
  • 如何从特定类获取特定链接?

    我想提取这个href从那个特定的class tr class even td a href italy serie a 2015 2016 Serie A 2015 2016 a td 这是我写的 Sub ExtractHrefClass
  • 具有日期和名称标准的 SUMIFS...仅限月份和年份

    我正在尝试获取 SUMIFS 公式来检查日期列 并仅对与标准日期的匹配年份和月份相对应的值求和 我还希望此 SUMIFS 包含名称标准和日期 IE 单元格 A1 SUMIFS Sheet1 O O Sheet1 D D Sheet2 DAT
  • VBA MS-Word:是否可以用通配符替换文本?

    是否可以替换使用通配符找到的文本并将其也替换为通配符 例如FindText 13 2 13 Forward True MatchWildcards True 然后用这样的通配符替换它replacewith 13 2 11 是否可以 评论中的
  • 从新的 xlsx 文件中删除宏

    功能部分 下面的代码将 xlsm 文件中的 2 个选项卡保存到新的 xlsx 文件中 文件保持打开状态以进行编辑 错误 xlsm 选项卡在工作表代码中有触发器 该触发器无效 一旦在 xlsx 工作表中输入任何内容 就会导致错误 所需输出 编
  • Excel VSTO 加载项可以与 Excel 2007 和 2010 兼容吗?

    是否可以使用 VSTO 开发一个可部署到 Excel 2007 和 2010 的 Excel 加载项 任何有关此主题的详细资源的链接也将不胜感激 我似乎无法在谷歌上找到任何专门解决此问题的内容 我正在使用 Visual Studio 201
  • Excel工作表中的动态减法公式

    我需要在Excel中编写一个动态减法公式 该公式从其上方的单元格中减去 指定列的 单元格 例如 A2 A1 G1 G列固定 and A3 A2 G2 and A4 A3 G3 等等 Excel 足够智能 可以使用动态引用和对当前单元格的相对
  • 当第二个工作表中存在值时删除整行

    我有 2 张纸 sheet1 和sheet2 我在单元格 A3 sheet1 中有一个值 该值不是恒定的 Sheets2 中还有许多文件 我想做的是 当单元格 A3 Sheet1 中的值与 A 列 Sheet2 中的值相同时 它将删除找到该
  • Python(openpyxl):将数据从一个excel文件转移到另一个(模板文件)并用另一个名称保存,同时保留模板

    我有一个templateexcel 文件名为template xlsx其中有许多张 我想从单独的地方复制数据 csv文件到第一页template xlsx 命名为data 并将新文件另存为result xlsx同时保留原来的模板文件 我想粘
  • VBA 代码基准测试

    对 VBA 代码进行基准测试最准确的方法是什么 在我的例子中 我正在 Excel 中测试代码 除了下面的 2 种之外 还有其他对代码进行基准测试的技术吗 如果有 该方法的优点 缺点是什么 这里有两种流行的方法 First Timer Sub
  • 在 Excel 中打印 MATLAB 图窗并调整其大小

    我在 MATLAB 中有两个带有手柄的图形hFig1 and hFig2 我想将它们打印到 Excel 中的特定单元格 单元格 E3 和 I3 并将它们重新调整为 2 英寸 x 3 英寸 我尝试过使用 AddPictures对象处理程序和使
  • VBA 从文本文件的属性获取日期

    我正在尝试获取特定文本文件上传到计算机的日期 该日期不在实际的文本文件中 您必须右键单击然后转到属性才能查看日期 我需要将日期读入变量 我不知道从哪里开始尝试完成这件事 谢谢你 杰西 斯莫瑟蒙 如果内置FileDateTime 不是你可以使
  • 转置 CopyFromRecordset Excel VBA

    我的 Excel VBA 中有以下代码 可将 SQL 中的表中的数据复制到 Excel 中 该数据从单元格 C2 开始水平插入 但我希望将其垂直插入到 C 列 Sheets Control Range C2 CopyFromRecorset
  • 如何使用Python更改Excel中的列格式

    我想使用 openpyxl 方法将一张纸上的特定行和列复制到另一张纸上 但我的主要 Excel 文件是 xlsb 文件 而 openpyxl 不支持 xlsb 文件 所以我构建了这种复杂的方式 根据公司规则 我无法从 Microsoft E
  • 将单独的范围放入二维数组中

    我正在尝试获取大小的二维数组 x 3 填充 X只是工作表的大小 行数 并且有 3 列我感兴趣 例如 这些列彼此不靠近arr i 0 应从 AA 栏开始填写 arr i 1 应来自 K 列 并且arr i 2 需要来自 L 列 我尝试按以下方
  • Excel countif 单元格中的日期大于或等于另一个单元格中的日期

    这已经让我难受有一段时间了 我只需要计算一个单元格中的日期是否大于或等于另一个单元格中的日期 减去 x 天 例如 A1 2014 年 2 月 20 日 B1 2014年1月20日 COUNTIF B1 gt A1 30 30 就是负 30
  • 如何从 jQuery 获取 ajax 请求下载 Excel

    我有一个 Spring MVC 视图 它提供了一个 excel 文件 但是 我现在修改了该过程 以便用户获得一个模式框 他们可以在下载 excel 之前在其中选择一些选项 这些选定的选项将发送到视图 我的请求看起来像这样 get downl

随机推荐

  • 当许多客户端连接时,我的 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 主体 运行代码时 我得到了格式 但唯一的问题是表格的颜色变成了黑色和灰色 请帮助我弄清楚如何放置我需要的确切颜色 这是我的代码