Vba 将outlook电子邮件保存到我的内部驱动器作为.msg文件

Vba 将outlook电子邮件保存到我的内部驱动器作为.msg文件,vba,outlook,Vba,Outlook,我正在尝试将Outlook电子邮件保存到我的H:Drive中。我希望它作为一个运行脚本的规则,但我无法让它工作。没有涉及任何附件,我只需要将其保存为.msg文件。如果您找到不同的方法来解决此问题,请联系我们 谢谢 Sub ExtractEmailToFolder2(itm As Outlook.MailItem) Dim OlApp As Outlook.Application Set OlApp = New Outlook.Application Dim Mailobject As Obje

我正在尝试将Outlook电子邮件保存到我的H:Drive中。我希望它作为一个运行脚本的规则,但我无法让它工作。没有涉及任何附件,我只需要将其保存为.msg文件。如果您找到不同的方法来解决此问题,请联系我们

谢谢

Sub ExtractEmailToFolder2(itm As Outlook.MailItem)

Dim OlApp As Outlook.Application
Set OlApp = New Outlook.Application
Dim Mailobject As Object
Dim Email As String
Dim NS As NameSpace
Dim Folder As MAPIFolder
Set OlApp = CreateObject("Outlook.Application")

Dim fso As Object
Dim fldrname As String
Dim fldrpath As String

' Setup Namespace
  Set NS = ThisOutlookSession.Session
' Display select folder dialog
  Set Folder = NS.PickFolder
' Create Folder File
  Set fso = CreateObject("Scripting.FileSystemObject")

' loop to read email address from mail items.
For Each Mailobject In Folder.Items
fldrpath = "H:\Backup stuff\"
If Not fso.folderexists(fldrpath) Then
    fso.createfolder (fldrpath)
End If

Set objCopy = Mailobject.Copy
objCopy.SaveAs fldrpath & "\" & objCopy.Subject, olMSG

Next
Set OlApp = Nothing
Set Mailobject = Nothing

End Sub

问题:

Sub ExtractEmailToFolder2()


Dim OlApp As Outlook.Application
Set OlApp = New Outlook.Application
Dim Mailobject As Object
Dim Email As String
Dim NS As NameSpace
Dim Folder As MAPIFolder
Set OlApp = CreateObject("Outlook.Application")

Dim fso As Object
Dim fldrname As String
Dim fldrpath As String

' Setup Namespace
  Set NS = ThisOutlookSession.Session
' Display select folder dialog
  Set Folder = NS.PickFolder
' Create Folder File
  Set fso = CreateObject("Scripting.FileSystemObject")

  fldrpath = "H:\Backup stuff\"

If Not fso.folderexists(fldrpath) Then
    fso.createfolder (fldrpath)
End If


' loop to read email address from mail items.
i = 1

For Each Mailobject In Folder.Items

    Mailobject.SaveAs fldrpath & "\mail" & i & ".msg", olMsg
    i = i + 1

Next
Set OlApp = Nothing
Set Mailobject = Nothing


End Sub
  • 循环中包含文件夹检查
  • 文件名中有主题。除非进行某种操作,否则这总是会产生问题。因为它包含Windows中文件名中不允许的各种字符
注意:

Sub ExtractEmailToFolder2()


Dim OlApp As Outlook.Application
Set OlApp = New Outlook.Application
Dim Mailobject As Object
Dim Email As String
Dim NS As NameSpace
Dim Folder As MAPIFolder
Set OlApp = CreateObject("Outlook.Application")

Dim fso As Object
Dim fldrname As String
Dim fldrpath As String

' Setup Namespace
  Set NS = ThisOutlookSession.Session
' Display select folder dialog
  Set Folder = NS.PickFolder
' Create Folder File
  Set fso = CreateObject("Scripting.FileSystemObject")

  fldrpath = "H:\Backup stuff\"

If Not fso.folderexists(fldrpath) Then
    fso.createfolder (fldrpath)
End If


' loop to read email address from mail items.
i = 1

For Each Mailobject In Folder.Items

    Mailobject.SaveAs fldrpath & "\mail" & i & ".msg", olMsg
    i = i + 1

Next
Set OlApp = Nothing
Set Mailobject = Nothing


End Sub
  • 将其放入Outlook的任何模块中,并使用F5或创建快捷方式运行
试试看:

Sub ExtractEmailToFolder2()


Dim OlApp As Outlook.Application
Set OlApp = New Outlook.Application
Dim Mailobject As Object
Dim Email As String
Dim NS As NameSpace
Dim Folder As MAPIFolder
Set OlApp = CreateObject("Outlook.Application")

Dim fso As Object
Dim fldrname As String
Dim fldrpath As String

' Setup Namespace
  Set NS = ThisOutlookSession.Session
' Display select folder dialog
  Set Folder = NS.PickFolder
' Create Folder File
  Set fso = CreateObject("Scripting.FileSystemObject")

  fldrpath = "H:\Backup stuff\"

If Not fso.folderexists(fldrpath) Then
    fso.createfolder (fldrpath)
End If


' loop to read email address from mail items.
i = 1

For Each Mailobject In Folder.Items

    Mailobject.SaveAs fldrpath & "\mail" & i & ".msg", olMsg
    i = i + 1

Next
Set OlApp = Nothing
Set Mailobject = Nothing


End Sub

问题:

Sub ExtractEmailToFolder2()


Dim OlApp As Outlook.Application
Set OlApp = New Outlook.Application
Dim Mailobject As Object
Dim Email As String
Dim NS As NameSpace
Dim Folder As MAPIFolder
Set OlApp = CreateObject("Outlook.Application")

Dim fso As Object
Dim fldrname As String
Dim fldrpath As String

' Setup Namespace
  Set NS = ThisOutlookSession.Session
' Display select folder dialog
  Set Folder = NS.PickFolder
' Create Folder File
  Set fso = CreateObject("Scripting.FileSystemObject")

  fldrpath = "H:\Backup stuff\"

If Not fso.folderexists(fldrpath) Then
    fso.createfolder (fldrpath)
End If


' loop to read email address from mail items.
i = 1

For Each Mailobject In Folder.Items

    Mailobject.SaveAs fldrpath & "\mail" & i & ".msg", olMsg
    i = i + 1

Next
Set OlApp = Nothing
Set Mailobject = Nothing


End Sub
  • 循环中包含文件夹检查
  • 文件名中有主题。除非进行某种操作,否则这总是会产生问题。因为它包含Windows中文件名中不允许的各种字符
注意:

Sub ExtractEmailToFolder2()


Dim OlApp As Outlook.Application
Set OlApp = New Outlook.Application
Dim Mailobject As Object
Dim Email As String
Dim NS As NameSpace
Dim Folder As MAPIFolder
Set OlApp = CreateObject("Outlook.Application")

Dim fso As Object
Dim fldrname As String
Dim fldrpath As String

' Setup Namespace
  Set NS = ThisOutlookSession.Session
' Display select folder dialog
  Set Folder = NS.PickFolder
' Create Folder File
  Set fso = CreateObject("Scripting.FileSystemObject")

  fldrpath = "H:\Backup stuff\"

If Not fso.folderexists(fldrpath) Then
    fso.createfolder (fldrpath)
End If


' loop to read email address from mail items.
i = 1

For Each Mailobject In Folder.Items

    Mailobject.SaveAs fldrpath & "\mail" & i & ".msg", olMsg
    i = i + 1

Next
Set OlApp = Nothing
Set Mailobject = Nothing


End Sub
  • 将其放入Outlook的任何模块中,并使用F5或创建快捷方式运行
试试看:

Sub ExtractEmailToFolder2()


Dim OlApp As Outlook.Application
Set OlApp = New Outlook.Application
Dim Mailobject As Object
Dim Email As String
Dim NS As NameSpace
Dim Folder As MAPIFolder
Set OlApp = CreateObject("Outlook.Application")

Dim fso As Object
Dim fldrname As String
Dim fldrpath As String

' Setup Namespace
  Set NS = ThisOutlookSession.Session
' Display select folder dialog
  Set Folder = NS.PickFolder
' Create Folder File
  Set fso = CreateObject("Scripting.FileSystemObject")

  fldrpath = "H:\Backup stuff\"

If Not fso.folderexists(fldrpath) Then
    fso.createfolder (fldrpath)
End If


' loop to read email address from mail items.
i = 1

For Each Mailobject In Folder.Items

    Mailobject.SaveAs fldrpath & "\mail" & i & ".msg", olMsg
    i = i + 1

Next
Set OlApp = Nothing
Set Mailobject = Nothing


End Sub

首先,如果VBA宏按规则运行,则无需创建新的Outlook
应用程序
实例(在示例代码中创建两次!)。相反,您可以使用全局
应用程序
属性:

Sub ExtractEmailToFolder2(itm As Outlook.MailItem)

Dim fso As Object
Dim fldrname As String
Dim fldrpath As String

' Create Folder if required
  Set fso = CreateObject("Scripting.FileSystemObject")

fldrpath = "H:\Backup stuff\"
If Not fso.folderexists(fldrpath) Then
    fso.createfolder (fldrpath)
End If

itm.SaveAs fldrpath & "\" & "your_unique_filename.msg", olMSG

Set OlApp = Nothing
Set Mailobject = Nothing

End Sub

上面显示的示例代码将针对其运行规则的项目保存到指定/硬编码的文件夹中。

首先,如果VBA宏按规则运行,则无需创建新的Outlook
应用程序
实例(在示例代码中两次!)。相反,您可以使用全局
应用程序
属性:

Sub ExtractEmailToFolder2(itm As Outlook.MailItem)

Dim fso As Object
Dim fldrname As String
Dim fldrpath As String

' Create Folder if required
  Set fso = CreateObject("Scripting.FileSystemObject")

fldrpath = "H:\Backup stuff\"
If Not fso.folderexists(fldrpath) Then
    fso.createfolder (fldrpath)
End If

itm.SaveAs fldrpath & "\" & "your_unique_filename.msg", olMSG

Set OlApp = Nothing
Set Mailobject = Nothing

End Sub

上面显示的示例代码将针对其运行规则的项目保存到指定/硬编码的文件夹。

Ah好的。不过,我的代码还是有问题。“itm.SaveAs fldrpath&“\”&objCopy.Subject,olMSG”,这行代码不断出现错误。outlook规则接收电子邮件后,脚本应保存电子邮件,但每次都会在脚本的该行停止。请确保文件名和路径不包含禁止的符号。嗯,手动键入文件名没有问题。问题是我每天都收到这封电子邮件,所以我试图在文件名中包含这些数据。例如,发布(仪表盘)8(仪表盘)06(仪表盘)19。第二天它将是为“…\u 08\u 07\u 19.Ah好的,但是我仍然有代码问题。”itm.SaveAs fldrpath&“\”&objCopy.Subject,olMSG“,这条线一直在窃听。outlook规则接收电子邮件后,脚本应保存电子邮件,但每次都会在脚本的该行停止。请确保文件名和路径不包含禁止的符号。嗯,手动键入文件名没有问题。问题是我每天都收到这封电子邮件,所以我试图在文件名中包含这些数据。例如,发布(仪表盘)8(仪表盘)06(仪表盘)19。第二天就要到了“……谢谢!!那么,你是说无论电子邮件主题是什么,保存都很有挑战性吗?这并不具有挑战性,你所要做的就是确保在保存时,文件夹名称中不包含任何不允许的字符。类似于删除文件夹名称中不允许的所有
。长度也在限制范围内。若要提取电子邮件的主题,我可以使用mailobject.subject吗?是的,您可以。。如果答案解决了您的问题,请接受并投票:)谢谢!!那么,你是说无论电子邮件主题是什么,保存都很有挑战性吗?这并不具有挑战性,你所要做的就是确保在保存时,文件夹名称中不包含任何不允许的字符。类似于删除文件夹名称中不允许的所有
。长度也在限制范围内。若要提取电子邮件的主题,我可以使用mailobject.subject吗?是的,您可以。。如果答案解决了您的问题,请接受并投票:)