【发布时间】:2012-11-29 18:25:18
【问题描述】:
我正在尝试读取邮件正文中的表格并将其保存在 csv 文件中(我在下面附加了一个代表邮件内容的 html 示例)。我关注了一个相关的帖子:How to read table pasted in outlook message body using vba?,但问题是它通过它的单元格而不是它的行来分隔表格,所以我没有得到 17 行一个标题,而是得到 18 x 5 = 90 个数组元素......我试过了将拆分选项中的分隔符从“vbCrLf”更改为“vbLf”、“vbCr”、Char(10)……但它们都不起作用……任何人都知道为什么拆分不区分空格分隔符从一个新行?这似乎是在邮件正文中读取表格的最简单方法,但如果您有任何其他建议,我也会考虑!
这里是示例链接:sample
谢谢
【问题讨论】:
-
Jim Pena 的出色解决方案着眼于邮件项目的文本正文(属性 .Body)。您正在查看 html 正文(属性 .HtmlBody)。您的消息有正文吗?吉姆答案的任何变化都不会解码您引用的 htm 样本。下一条评论包括表格标题中“术语”一词的整个单元格。我有一个可能(重复可能)有帮助的例程,但首先查看文本正文。
-
Term
-
嗨,托尼,我发送的 htm 示例实际上代表了我的电子邮件内容,因此我可以通过 .Body 属性成功检索内容。我的问题仍然在于,当拆分我的示例中显示的表格时,它会按单元格拆分而不是按行拆分。我不确定我是否理解您对标题中“术语”一词的看法,请您进一步解释?感谢您的帮助!
-
如果您查看我的最后一条评论,您会看到它以
<td开头并以</td>结尾。所有这些文本都是定义表格的一个单元格。如果您查看底线的中间,您将看到Term。这是内容。剩下的就是格式化:边框的宽度和颜色、字体大小、字体系列等。Jim 的例程对没有格式化的电子邮件正文的文本版本进行操作。我的例程在 Html 版本上运行,并去掉所有这些格式,并确定第 3 行的第 4 列包含Term。 -
我无法在此处发布我的解决方案,因为它有 46,000 个字符长并且堆栈溢出限制为 30,000。但是,如果您有兴趣,我很乐意通过电子邮件将其发送给您。顺便说一句,我还没有为你编写 46,000 个字符的例程。大部分代码是我为自己使用而编写的例程。我为您编写的唯一代码是创建下面的图像。