【问题标题】:Save current email and recreate it as new mail保存当前电子邮件并将其重新创建为新邮件
【发布时间】:2020-09-24 14:15:33
【问题描述】:

我需要一个适用于 Outlook 的宏:

  1. 将打开的电子邮件另存为 email.msg(包括附件)
  2. 关闭当前的电子邮件窗口
  3. 创建一封从 email.msg 读取的新电子邮件(从步骤 1 开始。)

我在谷歌上做了一些研究,但对我没有任何帮助。 这就是我到目前为止所做的(1. 步骤.. 但不工作)

    Option Explicit
    Public Sub SaveMessageAsMsg()
      Dim oMail As Outlook.MailItem
      Dim objItem As Object
      Dim sPath As String
      Dim dtDate As Date
      Dim sName As String
      Dim enviro As String
     
        enviro = CStr(Environ("USERPROFILE"))
       For Each objItem In ActiveExplorer.Selection
       If objItem.MessageClass = "IPM.Note" Then
        Set oMail = objItem
       
      sName = oMail.Subject
      ReplaceCharsForFileName sName, "email"
     
      dtDate = oMail.ReceivedTime
      sName = Format(dtDate, "yyyymmdd", vbUseSystemDayOfWeek, _
        vbUseSystem) & Format(dtDate, "-hhnnss", _
        vbUseSystemDayOfWeek, vbUseSystem) & "-" & sName & ".msg"
         
        sPath = enviro & "\Documents\"
      Debug.Print sPath & sName
      oMail.SaveAs sPath & sName, olMsg


'this closes window:

Dim myinspector As Outlook.Inspector
 
Dim myItem As Outlook.MailItem
  
Set myinspector = Application.ActiveInspector
Set myItem = myinspector.CurrentItem
 myItem.Close olSave
      
      End If
      Next
      
    End Sub

【问题讨论】:

    标签: vba outlook save new-operator


    【解决方案1】:
    Option Explicit
    
    Sub SaveCurrentItemAsMsg()
    
        Dim oMail As MailItem
        Dim objItem As Object
        Dim sPath As String
        Dim dtDate As Date
        Dim sName As String
        Dim enviro As String
        
        Dim myItem As MailItem
        
        enviro = CStr(Environ("USERPROFILE"))
        
        Set objItem = ActiveInspector.currentItem
        
        If objItem.MessageClass = "IPM.Note" Then
            
            Set oMail = objItem
                
            sName = oMail.Subject
            ReplaceCharsForFileName sName, "email"
                
            dtDate = oMail.ReceivedTime
            sName = Format(dtDate, "yyyymmdd", vbUseSystemDayOfWeek, _
                vbUseSystem) & Format(dtDate, "-hhnnss", _
                vbUseSystemDayOfWeek, vbUseSystem) & "-" & sName & ".msg"
             
            sPath = enviro & "\Documents\"
            Debug.Print sPath & sName
            oMail.SaveAs sPath & sName, olMsg
            
            oMail.Close olDiscard
            Set oMail = Nothing
            
            Set myItem = Session.OpenSharedItem(sPath & sName)
            myItem.Display
                
        End If
          
    End Sub
    
    
    Sub SaveSelectedMessagesAsMsg()
    
        Dim oMail As MailItem
        Dim objItem As Object
        Dim sPath As String
        Dim dtDate As Date
        Dim sName As String
        Dim enviro As String
        
        Dim myItem As MailItem
         
        enviro = CStr(Environ("USERPROFILE"))
        
        For Each objItem In ActiveExplorer.Selection
        
            If objItem.MessageClass = "IPM.Note" Then
            
                Set oMail = objItem
                
                sName = oMail.Subject
                ReplaceCharsForFileName sName, "email"
         
                dtDate = oMail.ReceivedTime
                sName = Format(dtDate, "yyyymmdd", vbUseSystemDayOfWeek, _
                  vbUseSystem) & Format(dtDate, "-hhnnss", _
                  vbUseSystemDayOfWeek, vbUseSystem) & "-" & sName & ".msg"
             
                sPath = enviro & "\Documents\"
                Debug.Print sPath & sName
                oMail.SaveAs sPath & sName, olMsg
      
                Set myItem = Session.OpenSharedItem(sPath & sName)
                myItem.Display
                
            End If
        Next
          
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-31
      • 1970-01-01
      • 1970-01-01
      • 2010-11-20
      相关资源
      最近更新 更多