【问题标题】:Extract Outlook e-mail content between two known constants to Excel将两个已知常量之间的 Outlook 电子邮件内容提取到 Excel
【发布时间】:2020-09-10 21:46:10
【问题描述】:

我们正在创建一个网站。有一个创建表单的选项。用户可以提交表单,表单的内容会以电子邮件的形式发送给我们。

然而,我们需要在 Excel 工作表中收集的信息。

我无法让任何已发布的答案对我有用。

我无法控制上述电子邮件的格式。还有一个内容来自多行文本框。

是否可以搜索两个常量并从两者之间获取内容?
例如,获取“3.Description:”和“4.Category:”之间的所有内容,然后将其放入所需的 Excel 单元格中。

【问题讨论】:

    标签: excel vba search outlook extract


    【解决方案1】:

    将电子邮件正文设置为字符串数组变量,并使用 split 获取您需要的数据。

    dim str() as string
    str = split(outlookmail.body,"")
    

    然后循环遍历数组输出到单元格。

    flag = true
    
    For i=Lbound(str) to uBound(str)
       
       if (inStr(1,str(i),"3. Description:") then 
          do while <> inStr(1,str(i),"4. Category:"
            i=i+1
    
            if flag then
               cells(i,1).value = str(i)
               flag = false
            else
               cells(i,1).value = cells(i,1).value & vbnewline & str(i)
            end if
          loop
       end if 
    next i
    

    【讨论】:

      【解决方案2】:

      你对一个问题的要求太多了,但我会尝试通过指出你必须研究的主题来帮助你开始。

      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 规则或新项目事件例程。我怀疑新项目事件例程方法会更容易。

      您必须决定新项目事件例程是为每封新电子邮件打开一个工作簿,还是将电子邮件输出到文本文件并每隔一段时间导入到工作簿。最佳方法取决于电子邮件的数量以及您希望在到达后多长时间内处理电子邮件。

      【讨论】:

        猜你喜欢
        • 2015-03-07
        • 2020-04-01
        • 2015-04-29
        • 1970-01-01
        • 1970-01-01
        • 2022-08-20
        • 1970-01-01
        • 2015-07-24
        • 2014-12-17
        相关资源
        最近更新 更多