Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Outlook电子邮件中发送动态Excel表_Excel_Vba_Email_Outlook - Fatal编程技术网

在Outlook电子邮件中发送动态Excel表

在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

我试图在Excel 2016中,在Outlook 2016中发送一封电子邮件,邮件正文中有一个表格。
我研究过堆栈溢出以及其他网站。我发现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