2008-12-30 65 views
5

我已經編寫了一個VBA應用程序,它在Outlook中打開一個文件夾,然後遍歷消息。我需要將消息體(通過一些調整)寫入單個平面文件。我的代碼如下...使用VBA將電子郵件信息寫入Outlook中的平面文件

Private Sub btnGo_Click() 
    Dim objOutlook As New Outlook.Application 
    Dim objNameSpace As Outlook.NameSpace 
    Dim objInbox As MAPIFolder 
    Dim objMail As mailItem 
    Dim count As Integer 

    Set objNameSpace = objOutlook.GetNamespace("MAPI") 
    Set objInbox = objNameSpace.GetDefaultFolder(olFolderInbox) 
    count = 0 

    For Each objMail In objInbox.Items 
     lblStatus.Caption = "Count: " + CStr(count) 
     ProcessMailItem (objMail) 
     count = count + 1 
    Next objMail 

    End If 
End Sub 

問題的部分是「ProcessMailItem」。由於我在這個階段並不過分關注性能,所以對於這個例子來說,非常不合適的「開放,追加,關閉」文件方法是很好的。

我知道我可以花一些時間用谷歌查找答案,但我先在這裏查了一下,沒有很好的答案。作爲Stackoverflow的忠實粉絲,我希望能夠在這裏提供幫助,幫助未來的開發者尋找答案。謝謝你的耐心。

回答

6

您可以寫入文件,而無需使用任何對象,只需使用內置的VBA文件的工具脫身:

Open "C:\file.txt" for append as 1 
Print #1, SomeStringVar 
Close #1 
+0

我選擇了這個答案,因爲它是非常VBA中心。埃裏克內斯的答案也是有效的! – Craig 2008-12-30 21:27:04

4

如果你不介意每次追加文本時重新打開輸出文件,那麼這應該工作。

Private Sub ProcessMailItem(objMail As MailItem) 

    Dim fso As New FileSystemObject 
    Dim ts As TextStream 

    Set ts = fso.OpenTextFile("C:\Outputfile.txt", ForAppending, True) 

    ts.Write(objMail.Body) 

    ts.Close() 
    Set ts = Nothing 
    Set fso = Nothing 

End Sub 

您還需要添加對Microsoft腳本運行時庫的引用。這裏有FileSystemObject。

1

你也必須採取安全彈出的關懷「試圖訪問電子郵件地址「這是覆蓋在Outlook "Object Model Guard" Security Issues for Developers

Public Sub ProcessMailItem(objMail As MailItem) 
Dim FSO As New FileSystemObject 
Dim ts As TextStream 
Dim loc As String 
Dim subject As String 
Dim strID As String 
' per http://www.outlookcode.com/article.aspx?ID=52 
Dim olNS As Outlook.NameSpace 
Dim oMail As Outlook.MailItem 

strID = MyMail.EntryID 
Set olNS = Application.GetNamespace("MAPI") 
Set oMail = olNS.GetItemFromID(strID) 
subject = oMail.subject 
Set ts = FSO.OpenTextFile("C:\Documents and Settings\tempuser\My Documents\EMAILS\" + subject, ForAppending, True) 
ts.Write (oMail.Body) 
ts.Close 
Set ts = Nothing 
Set FSO = Nothing 
Set oMail = Nothing 
Set olNS = Nothing 

末次

+0

OpenTextFile中的路徑仍然存在一些問題。我沒有得到一致的結果,該路徑與較短的路徑沒有空格。 – jim 2011-11-03 15:47:42

相關問題