2010-02-20 39 views

回答

2

我会说Office Automation是去这里的方法.. 如果您安装了Excel,您可以直接将属性插入到工作表上的单元格中。您可以在Excel中编写宏来自动化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 

Marcus

+0

马库斯,非常感谢你提供这个脚本!它在第一次尝试中完美运行。我需要做的唯一改变就是从田野中取出逗号,因为我的科目中有逗号。我也查找了MailItem对象,所以我可以访问其他字段。非常感谢你,你为我省下了很多时间! – Noel 2010-02-20 19:53:38

+0

顺便说一句,我真的很喜欢能够选择文件夹,而不是硬编码到脚本中的功能,好:) – Noel 2010-02-20 19:58:58

相关问题