【问题标题】:Send range as table with images in email body with Excel VBA使用 Excel VBA 在电子邮件正文中以表格形式发送范围
【发布时间】:2019-10-04 14:39:23
【问题描述】:

我通过 Outlook 从 Excel 发送内联表格。

我现在想要/需要将图像添加到表格中。

问题是 Excel 和 Outlook 之间的格式丢失。

有没有办法在保持格式的同时将包含图像的范围粘贴为表格?

我能做到这一点的最接近和最干净的方法是使用这个 sn-p:

Private Sub SENDBETABTTN_Click()
'Copy range of interest
Dim r As Range
Set r = MainDRK.Range("j3:aj" & MainDRK.Range("ae87").Value)
r.Copy

'Open a new mail item
Dim outlookApp As Outlook.Application
Set outlookApp = CreateObject("Outlook.Application")
Dim outMail As Outlook.MailItem
Set outMail = outlookApp.CreateItem(olMailItem)

'Get its Word editor
outMail.Display
Dim wordDoc As Word.Document
Set wordDoc = outMail.GetInspector.WordEditor

'To paste as picture
wordDoc.Range.PasteAndFormat wdFormatOriginalFormatting
End Sub

剩下的问题是我失去了图像的位置,进而搞砸了表格的单元格大小。

最终结果如下所示:Bad Table

我的目标是:好桌子

【问题讨论】:

  • 可以分享一下excel文件吗?
  • 由于公司政策,我不愿意分享文件。这是一个看似简单的问题,我想将 Excel 中的一个范围复制粘贴到 Outlook 中,从而在 Outlook 中留下一个格式化的表格。问题是 PNG/JPEG 和“形状”导致 Outlook/粘贴图表中的间距问题。

标签: excel vba outlook ms-word


【解决方案1】:

粘贴为Type:=wdChartPicture MSDN

另外,如果需要,设置 inlineshapes 高度和宽度

    With wdDoc
        .InlineShapes(1).Height = 130
     End With

https://stackoverflow.com/a/48897439/4539709

【讨论】:

  • 我已恢复使用 wdChartPicture,这可以正常工作,因为应用程序之间的间距是持久的,但不是所需的结束,因为它粘贴了范围的图像而不是表格。我在让 InlineShapes 正常工作时遇到问题,但我会在今天进一步解决这个问题。我不知道 2013 年和 2016 年之间使用 InlineShapes 是否有变化,但我目前使用的是 2016 年。
  • @CraigKey 以我复制的方式查看此链接 - stackoverflow.com/a/48897439/4539709
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 2016-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多