【发布时间】:2010-02-20 02:36:35
【问题描述】:
将邮件从 Outlook 2007 文件夹导出到 CSV 文件的最佳方法是什么?我也想在子文件夹中包含邮件消息。内置的 csv 导出器不允许包含子文件夹的选项,但在其他方面正是我想要的。
【问题讨论】:
标签: csv outlook export outlook-2007 export-to-excel
将邮件从 Outlook 2007 文件夹导出到 CSV 文件的最佳方法是什么?我也想在子文件夹中包含邮件消息。内置的 csv 导出器不允许包含子文件夹的选项,但在其他方面正是我想要的。
【问题讨论】:
标签: csv outlook export outlook-2007 export-to-excel
我会说办公自动化是通往这里的道路.. 如果您安装了 Excel,您可以直接将属性插入到工作表上的单元格中。您可以在 Excel 中编写宏来自动化 Outlook,也可以在 Outlook 中编写宏来将数据推送到工作表中。
下面我为 Outlook 创建了一个快速的 VBA,并使用 FSO 来代替,它会给你一个框架来工作,它将需要更多的错误处理测试等。强>
Sub SaveItemsToExcel()
On Error GoTo ErrorHandlerExit
Dim oNameSpace As Outlook.NameSpace
Dim oFolder As Outlook.MAPIFolder
'You must set a reference to the Microsoft Scripting Runtime library touse the FileSystemObject
Dim objFS As Scripting.FileSystemObject
Dim objOutputFile As Scripting.TextStream
Set objFS = New Scripting.FileSystemObject
Set objOutputFile = objFS.OpenTextFile("C:\Temp\Export.csv", ForWriting, True)
Set oNameSpace = Application.GetNamespace("MAPI")
Set oFolder = oNameSpace.PickFolder
If oFolder Is Nothing Then
GoTo ErrorHandlerExit
End If
' Check if folder can contain Mail Items
If oFolder.DefaultItemType <> olMailItem Then
MsgBox "Folder does not contain mail messages"
GoTo ErrorHandlerExit
End If
'Write header line
objOutputFile.WriteLine "From,Subject,Recived"
ProcessFolderItems oFolder, objOutputFile
objOutputFile.Close
Set oFolder = Nothing
Set oNameSpace = Nothing
Set objOutputFile = Nothing
Set objFS = Nothing
ErrorHandlerExit:
Exit Sub
End Sub
Sub ProcessFolderItems(oParentFolder As Outlook.MAPIFolder, ByRef objOutputFile As Scripting.TextStream)
Dim oCount As Integer
Dim oMail As Outlook.MailItem
Dim oFolder As Outlook.MAPIFolder
oCount = oParentFolder.Items.Count
For Each oMail In oParentFolder.Items
If oMail.Class = olMail Then
objOutputFile.WriteLine oMail.SenderEmailAddress & "," & oMail.Subject & "," & oMail.ReceivedTime
End If
Next oMail
Set oMail = Nothing
'check to see if we have an child folders
If (oParentFolder.Folders.Count > 0) Then
For Each oFolder In oParentFolder.Folders
ProcessFolderItems oFolder, objOutputFile
Next
End If
End Sub
马库斯
【讨论】: