你对一个问题的要求太多了,但我会尝试通过指出你必须研究的主题来帮助你开始。
Outlook 将接受文本、Html 或富文本格式 (RTF) 电子邮件正文。我从未见过 RTF 电子邮件,所以我怀疑您的网站正在发送 RTF 电子邮件。电子邮件将具有文本正文或 Html 正文或两者兼而有之。如果电子邮件两者都有,用户将只能在屏幕上看到 Html 正文,尽管 VBA 宏可以访问这两个版本。你显示“1.姓名”、“2.电子邮件”、“3.说明”和“4.类别”下划线。下划线仅适用于 Html 正文,因此,如果您的图像正确,则您有 Html 正文。我怀疑,您只有 Text 正文。但是,如果您的网站正在发送 Html 正文,Outlook 将通过删除所有 Html 标记并用回车换行 (CRLF) 替换它们来创建文本版本。
正文将是:
1. Name¶
John Doe¶
¶
2. E-mail¶
example@address.com¶
¶
3.Description¶
In this description¶
users can write in multiple lines. ¶
As far as I know there is also no character limit. ¶
¶
4. Category¶
Option 2¶
¶
其中¶s 将是单个 LF、CR LF 或 CR LF CR LF,具体取决于文本正文的创建方式。
如果您访问https://stackoverflow.com/a/58000707/973283,您将找到我用来发现电子邮件确切格式的诊断程序。您需要将该宏复制到 Outlook 并按照说明进行操作。
一旦你知道了分隔符,我想最简单的方法是使用:
Dim Lines() as String
Lines = Split(Email.Body, vbCRLF)
您需要将 vbCRLF 替换为适当的分隔符。
Lines 是一个数组,每行一个条目。降级数组并找到标题将很容易。 LinetonKoch 向您展示了如何做到这一点。您可以使用InStr 来建议在正文中搜索标题。问题是我希望分隔符是 CRLF,而 Excel 将 CR 视为未知字符,显示为正方形,因此您必须删除它们。
以上内容应该让您了解如何处理这些电子邮件。
我的诊断程序要求用户识别要处理的电子邮件。我假设您宁愿识别是自动的。您的选择是带有附加宏的 Outlook 规则或新项目事件例程。我怀疑新项目事件例程方法会更容易。
您必须决定新项目事件例程是为每封新电子邮件打开一个工作簿,还是将电子邮件输出到文本文件并每隔一段时间导入到工作簿。最佳方法取决于电子邮件的数量以及您希望在到达后多长时间内处理电子邮件。