将excel表复制到Outlook邮件并保留格式

时间:2018-02-02 01:04:29

标签: excel vba excel-vba email outlook

我正在使用VBA在excel中发送一系列单元格的电子邮件。当我复制到outlook时,表的大小变得混乱,所有文本都被包装起来。

我想保持我的表的格式和大小相同,我试图复制为图片,但图片变得非常小。它来自A1:AP98

有人可以帮忙吗?我正在使用Microsoft Office 2010

下面是我的代码

Sub SendEmail()

Dim olApp As Outlook.Application
Set olApp = CreateObject("Outlook.Application")

    Dim olMail As Outlook.MailItem
    Set olMail = olApp.CreateItem(olMailItem)

    olMail.Display

    olMail.To = "xxxx@xxxx.com"
    olMail.Subject = "Subject Line"
    olMail.HTMLBody = "Hello," & vbNewLine & vbNewLine & _
            "Welcome to My World" & vbNewLine & vbNewLine & _
            RangetoHTML(ActiveSheet.Range("A1:Ap90")) & _
           "Thank you for your cooperation." & "<br>" & olMail.HTMLBody
'    olMail.Send

End Sub

2 个答案:

答案 0 :(得分:0)

你可以通过分成几部分来做到这一点。

首先,您需要将所需数据提取到新工作表中。您可以稍后删除工作表。

如果您希望复制格式,也可以使用  像ThisWorkbook.Sheets("Copy").Range("A1").PasteSpecial Paste:=xlPasteFormats这样的东西。您可能需要xlPasteFormatsxlPasteColumnWidths&amp; xlPasteValues

要创建新工作表:Sheets.Add(, Sheets(Sheets.Count)).name = "worksheetName"

MailEnvelop示例

Sub sendEmail()

ThisWorkbook.EnvelopeVisible = True

With ThisWorkbook.Sheets("Copy").MailEnvelope
  .Introduction = "This is the email message"
  .Item.To = "abc@domain.com"
  .Item.Subject = "Subject"
  .Item.Send

End With

ThisWorkbook.EnvelopeVisible = False

'Delete the the worksheet
ThisWorkbook.Sheets("Copy").Delete

End Sub

请阅读此处以获取一些好的指南:https://www.rondebruin.nl/win/s1/outlook/mail.htm

答案 1 :(得分:0)

将其粘贴为HTML对象。

tibble(v) %>% tidytext::unnest_tokens(word, v) %>% group_by(word) %>% count()
# A tibble: 8 x 2
# Groups:   word [8]
  word          n
  <chr>     <int>
1 dance         4
2 everybody     4
3 give          2
4 me            2
5 music         2
6 now           4
7 the           2
8 yeah          3