如何使用 .HTMLBody 将电子邮件格式的 HTML 代码转换或音译为 VBA?
How to convert or transliterate HTML code for email formatting, into VBA using .HTMLBody?
作为建立在我客户系统上的基于 VBA 的次要自动化的一部分,我想在每次用户修改电子表格中的特定条目时发送一封通知电子邮件。
代码有效,使用 .Body 生成电子邮件是一个简单的修复。但是,我想要一种更复杂的方法,使用 .HTMLBody.
对电子邮件正文进行更“深入”的格式化。
我查找了各种资源,但无法获得将我的 HTML 代码转换为 VBA 并存储在变量中的简单方法。
例如,我有以下代码在 HTML 中生成一个 table(来自 wordtohtml.net)。将其转换为VBA,我最终失败了。
简而言之,我需要将以下 VBA 语言的文本存储在字符串变量“MsgColorBody”中
<p> </p>
<table style="border: none;border-collapse: collapse;width:404pt;">
<tbody>
<tr>
<td style="color:white;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:center;vertical-align:middle;border:.5pt solid windowtext;background:#002060;height:14.4pt;width:59pt;">Reference</td>
<td style="color:white;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:center;vertical-align:middle;border:.5pt solid windowtext;background:#002060;border-left:none;width:95pt;">Designation</td>
<td style="color:white;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:center;vertical-align:middle;border:.5pt solid windowtext;background:#002060;border-left:none;width:250pt;">Description</td>
</tr>
<tr>
<td style="color:black;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:center;vertical-align:middle;border:.5pt solid windowtext;height:23.4pt;border-top:none;">Gh123</td>
<td style="color:black;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:center;vertical-align:middle;border:.5pt solid windowtext;border-top:none;border-left:none;">MT103</td>
<td style="color:black;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:left;vertical-align:middle;border:.5pt solid windowtext;border-top:none;border-left:none;">Recurring</td>
</tr>
</tbody>
</table>
将 HTML 保存到 .Txt 文件中,然后在需要时将其读入变量。按照以下 - HTML 存储在 C:\AnyFldr\MasterHTML.Txt
dFile = "C:\AnyFldr\MasterHTML.Txt"
FileHdr1 = FreeFile ' Gets a numeric File Handle from the OS
Open dFile For Input As #FileHdr1
dContent = Input(VBA.LOF(FileHdr1), FileHdr1)
Close #FileHdr1
现在 dContent 包含 HTML。
您可能希望保存带有要填充数据标记的主记录,以便您可以替换那些
例如
<p> </p>
<table style="border: none;border-collapse: collapse;width:404pt;">
<tbody>
<tr>
<td style="color:white;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:center;vertical-align:middle;border:.5pt solid windowtext;background:#002060;height:14.4pt;width:59pt;">Reference</td>
<td style="color:white;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:center;vertical-align:middle;border:.5pt solid windowtext;background:#002060;border-left:none;width:95pt;">Designation</td>
<td style="color:white;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:center;vertical-align:middle;border:.5pt solid windowtext;background:#002060;border-left:none;width:250pt;">Description</td>
</tr>
<tr>
<td style="color:black;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:center;vertical-align:middle;border:.5pt solid windowtext;height:23.4pt;border-top:none;">XXXFld1XXX</td>
<td style="color:black;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:center;vertical-align:middle;border:.5pt solid windowtext;border-top:none;border-left:none;">XXXFld2XXX</td>
<td style="color:black;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:left;vertical-align:middle;border:.5pt solid windowtext;border-top:none;border-left:none;">XXXFld3XXX</td>
</tr>
</tbody>
</table>
然后简单地使用 Replace 插入值
dContents = Replace(dContents,"XXXFld1XXX","Gh123")
dContents = Replace(dContents,"XXXFld2XXX","MT103")
dContents = Replace(dContents,"XXXFld3XXX","Gh123")
作为建立在我客户系统上的基于 VBA 的次要自动化的一部分,我想在每次用户修改电子表格中的特定条目时发送一封通知电子邮件。
代码有效,使用 .Body 生成电子邮件是一个简单的修复。但是,我想要一种更复杂的方法,使用 .HTMLBody.
对电子邮件正文进行更“深入”的格式化。我查找了各种资源,但无法获得将我的 HTML 代码转换为 VBA 并存储在变量中的简单方法。
例如,我有以下代码在 HTML 中生成一个 table(来自 wordtohtml.net)。将其转换为VBA,我最终失败了。
简而言之,我需要将以下 VBA 语言的文本存储在字符串变量“MsgColorBody”中
<p> </p>
<table style="border: none;border-collapse: collapse;width:404pt;">
<tbody>
<tr>
<td style="color:white;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:center;vertical-align:middle;border:.5pt solid windowtext;background:#002060;height:14.4pt;width:59pt;">Reference</td>
<td style="color:white;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:center;vertical-align:middle;border:.5pt solid windowtext;background:#002060;border-left:none;width:95pt;">Designation</td>
<td style="color:white;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:center;vertical-align:middle;border:.5pt solid windowtext;background:#002060;border-left:none;width:250pt;">Description</td>
</tr>
<tr>
<td style="color:black;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:center;vertical-align:middle;border:.5pt solid windowtext;height:23.4pt;border-top:none;">Gh123</td>
<td style="color:black;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:center;vertical-align:middle;border:.5pt solid windowtext;border-top:none;border-left:none;">MT103</td>
<td style="color:black;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:left;vertical-align:middle;border:.5pt solid windowtext;border-top:none;border-left:none;">Recurring</td>
</tr>
</tbody>
</table>
将 HTML 保存到 .Txt 文件中,然后在需要时将其读入变量。按照以下 - HTML 存储在 C:\AnyFldr\MasterHTML.Txt
dFile = "C:\AnyFldr\MasterHTML.Txt"
FileHdr1 = FreeFile ' Gets a numeric File Handle from the OS
Open dFile For Input As #FileHdr1
dContent = Input(VBA.LOF(FileHdr1), FileHdr1)
Close #FileHdr1
现在 dContent 包含 HTML。
您可能希望保存带有要填充数据标记的主记录,以便您可以替换那些
例如
<p> </p>
<table style="border: none;border-collapse: collapse;width:404pt;">
<tbody>
<tr>
<td style="color:white;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:center;vertical-align:middle;border:.5pt solid windowtext;background:#002060;height:14.4pt;width:59pt;">Reference</td>
<td style="color:white;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:center;vertical-align:middle;border:.5pt solid windowtext;background:#002060;border-left:none;width:95pt;">Designation</td>
<td style="color:white;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:center;vertical-align:middle;border:.5pt solid windowtext;background:#002060;border-left:none;width:250pt;">Description</td>
</tr>
<tr>
<td style="color:black;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:center;vertical-align:middle;border:.5pt solid windowtext;height:23.4pt;border-top:none;">XXXFld1XXX</td>
<td style="color:black;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:center;vertical-align:middle;border:.5pt solid windowtext;border-top:none;border-left:none;">XXXFld2XXX</td>
<td style="color:black;font-size:13px;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial, sans-serif;text-align:left;vertical-align:middle;border:.5pt solid windowtext;border-top:none;border-left:none;">XXXFld3XXX</td>
</tr>
</tbody>
</table>
然后简单地使用 Replace 插入值
dContents = Replace(dContents,"XXXFld1XXX","Gh123")
dContents = Replace(dContents,"XXXFld2XXX","MT103")
dContents = Replace(dContents,"XXXFld3XXX","Gh123")