【问题标题】:Outlook Rule Save email to textOutlook 规则将电子邮件保存为文本
【发布时间】:2015-02-18 13:39:42
【问题描述】:

我在使用脚本自动将电子邮件正文导出到文本文件时遇到问题。 我管理了一个脚本,它将文本保存到宏上的文件中,但这不适用于我需要的规则。

我目前的代码如下:

Sub SaveAsTXT()
 Dim myItem As Outlook.Inspector
 Dim objItem As Object
 Dim myFolder As Folder



 Set myItem = Application.ActiveInspector
 If Not TypeName(myItem) = "Nothing" Then

        Set myNamespace = Application.GetNamespace("MAPI")
        Set myFolder = myNamespace.GetDefaultFolder(olFolderInbox)

 Set objItem = myItem.CurrentItem
 strname = objItem.Subject
 strdate = Format(objItem.ReceivedTime, " yyyy mm dd")
 objItem.SaveAs "c:\users\philip\documents\" & strname & strdate & ".txt", olTXT
    End If

End Sub

抱歉,如果它看起来有点乱,我已经编辑了无数次试图让它工作。

当我在打开的电子邮件中并将其作为宏运行时,该代码将正确运行,但在作为规则运行时将无法正常运行 我尝试修改为Sub SaveAsTXT(Item as Outlook.Mailitem),但这似乎也不起作用

所以基本上问题是我如何确保代码在按规则运行时选择电子邮件(始终标题为“Rotas”,不带引号)?

信息:使用 office 2010,我不是一个很好的编码器。

【问题讨论】:

    标签: vba email outlook


    【解决方案1】:

    其实我自己解决了。

    我不认为item as Outlook.Mailitem 元素实际上是规则选择的东西。所以我应用item作为对象而不是objItem

    在下面找到成功(和清理过的)代码:

    Sub SaveAsTXT(myMail As Outlook.MailItem)
    
     Dim objItem As Object
     Dim myFolder As Folder
    
    
     If Not TypeName(myitem) = "Nothing" Then
    
            If myMail.Subject = "Rotas" Then
    
     strname = myMail.Subject
     strdate = Format(myMail.ReceivedTime, " yyyy mm dd")
     myMail.SaveAs "c:\users\philip\documents\" & strname & ".txt", olTXT
        End If
    
    
     End If
    
    End Sub
    

    【讨论】:

    • 干得好,整理好自己+1。您也可以接受自己的答案或等待另一种方法来获得您想要的。见accepting answers
    • 感谢您发布此信息。经过一些小的修改,它也对我有用。
    • 您是否注意到您没有使用您在此处分配的 strdate?
    猜你喜欢
    • 2016-06-14
    • 2020-06-17
    • 2012-12-01
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    相关资源
    最近更新 更多