在Outlook电子邮件中发送动态Excel表
我试图在Excel 2016中,在Outlook 2016中发送一封电子邮件,邮件正文中有一个表格。在Outlook电子邮件中发送动态Excel表,excel,vba,email,outlook,Excel,Vba,Email,Outlook,我试图在Excel 2016中,在Outlook 2016中发送一封电子邮件,邮件正文中有一个表格。 我研究过堆栈溢出以及其他网站。我发现HTML部分令人困惑 下面是我写的发送电子邮件的代码。代码可以工作,但我需要用表替换.HTMLBody=“Hello World” Sub Send_mail() Dim outlookApp As Outlook.Application Dim outlookMail As Outlook.MailItem Set outlookApp = New Ou
我研究过堆栈溢出以及其他网站。我发现HTML部分令人困惑 下面是我写的发送电子邮件的代码。代码可以工作,但我需要用表替换
.HTMLBody=“Hello World”
Sub Send_mail()
Dim outlookApp As Outlook.Application
Dim outlookMail As Outlook.MailItem
Set outlookApp = New Outlook.Application
Set outlookMail = outlookApp.CreateItem(olMailItem)
With outlookMail
.To = "recipient@mail.com"
.CC = ""
.BCC = ""
.Subject = "TEST123"
.BodyFormat = olFormatHTML
.HTMLBody = "Hello World"
.Send
End With
Set outlookMail = Nothing
Set outlookApp = Nothing
End Sub
要插入电子邮件正文的表格由A、B、C和D列组成。数据总是从第2行开始,但包含最后一个数据的行需要是动态的。
该表将始终相当小-最多20行 我想下面的方法可能会奏效?
定位最后填充的行,然后循环遍历2和最后填充的行之间的每一行,并将其转换为HTML格式,并将其存储为字符串。然后将这些字符串连接成最后一个字符串,放入电子邮件正文中 我已经看过了Ron de Bruin的指南,但我希望在不必创建临时文件或使用非Microsoft工具的情况下实现这一点。宏将有几个来自专业公司的用户,并且需要防弹。我担心,如果公司的共享文件夹结构发生更改,保存和删除临时文件可能会导致可怕的错误。要从A2列复制到D列或第4列上次使用的范围,例如
@谢谢你的意见!然而,我已经读过那个网页了。正如我在我的帖子中提到的,我真的很想实现这一点,而不必创建或删除文件。这简直是不可能的吗?:)不是不可能,但太麻烦了。您需要在区域的行中循环,然后在每行中循环单元格,然后为表创建自己的HTML。
ThisWorkbook.Path
返回包含正在执行宏的工作簿的文件夹名称。无论他们移动工作簿或更改文件结构的频率有多高,使用该文件夹始终有效。“Hello World”
不是Html,尽管大多数浏览器都会正确显示它Hello World
是一个最小的Html字符串。你也需要学习Html和Css吗?有趣的方法。我找不到一种简单的方法将图片粘贴到电子邮件正文中,而不创建临时文件。这是不可能的吗?@JoeBerg看看这个链接,它工作得很好-谢谢!为其他人重述:这将在Excel中创建所需范围的图片,然后将其粘贴到Outlook中的电子邮件正文中。
With ThisWorkbook.Worksheets("Sheet1")
Dim rng As Range
Set rng = .Range("$A$2:" & .Cells( _
.Rows.Count, 4) _
.End(xlUp).Address)
Debug.Print rng.Address ' Print on immediate Window
rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture
End With