通过电子邮件发送Excel表时(使用RangeToHTML)保留单元格注释

时间:2019-05-15 18:10:56

标签: html excel vba outlook outlook-vba

我正在使用Ron de Bruin的著名版本“ rangetoHTML”通过Outlook通过电子邮件发送Excel范围(如此处:https://www.rondebruin.nl/win/s1/outlook/bmail2.htm)。尽管此方法可以正常工作,但某些单元格的注释在逻辑上不会保留到Outlook中。

我认为可能可以将注释作为工具提示添加一些CSS(如此处:https://www.w3schools.com/howto/howto_css_tooltip.asp),但是不确定a)Outlook是否支持HTML电子邮件中的工具提示(我看到冲突的消息),并且b)如果确实存在,如何在publishobjects吐出的html中实现它

要吐出HTM的相关位,但对于如何包含工具提示感到困惑。

   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

感谢您的帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

这是部分答案。如果它看起来很有希望,我会完成它,尽管可能要到周末为止。

我已经使用PublishObjects输出了一个范围,然后修改了输出文件以根据需要添加工具提示。使用Microsoft Edge,当我将鼠标悬停在相关单元格上时,修改后的文件将正确显示,并且出现提示。我尚未在Outlook中尝试过此操作,但我认为Outlook使用与Edge相同的显示引擎,因此它应可与Outlook一起使用。在做更多工作之前,需要对此进行测试。

罗恩·德布鲁因(Ron de Bruin)提供了一个出色的例程,该例程几乎可以为PublishObjects准备任何范围,调用PublishObjects,获取它创建的文件,并以字符串形式返回它,以准备成为电子邮件的HTML正文。

据我所知,没有办法使PublishObjects以您所需的方式向输出中添加注释。您将必须添加必要的代码。

使用方法1,您需要在函数RangeToHtml中的新代码介于“获取其创建的文件”和“将其作为字符串返回”之间。也就是说,您让PublishObjects做它的事情,然后修改它的输出,然后再将该输出返回给调用方。

函数RangeToHtml中的许多代码都允许范围是不连续的,我认为PublishObjects无法处理。如果您的范围很简单,那么创建一个新的RangeToHtml来处理简单范围和您的要求会更容易。这将是方法2。

方法1或方法2能更好地满足您的要求。

由PublishObjects创建的HTML文件包含一个表。表中没有任何内容可以指示哪个表单元格来自哪个Excel范围单元格。如果范围的第5列第2行有注释,则必须先递减s,然后递减s才能找到对应的表格单元格。该表单元格将不得不修改。如果现有单元格值为Xxxx,注释为Yyyy,则需要将Xxxx替换为:

<div class="tooltip">Xxxx<span class=tooltiptext>Yyyy</span></div>

听起来有趣吗?