2008-12-30 11 views
5

के साथ आउटलुक में फ्लैट फ़ाइलों को ईमेल संदेश लिखना मैंने एक वीबीए ऐप लिखा है जो दृष्टिकोण में एक फ़ोल्डर खोलता है और फिर संदेशों के माध्यम से पुनरावृत्त करता है। मुझे एक ही फ्लैट फ़ाइल में संदेश निकायों (कुछ tweaking के साथ) लिखने की जरूरत है। मेरा कोड इस प्रकार है ...वीबीए

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" है। चूंकि मैं इस चरण में प्रदर्शन से अत्यधिक चिंतित नहीं हूं इसलिए इस उदाहरण के लिए बहुत ही अक्षम "खुली, संलग्न, बंद" फ़ाइल पद्धति ठीक है।

मुझे पता है कि मैं Google के साथ जवाब देखने में कुछ समय व्यतीत कर सकता हूं लेकिन मैंने पहले यहां जांच की और इसके लिए कोई अच्छा जवाब नहीं था। स्टैकओवरफ्लो के प्रशंसक होने के नाते मुझे उम्मीद है कि इसे यहां डालने से भविष्य के डेवलपर्स को उत्तर की तलाश में मदद मिलेगी। आपके धैर्य के लिए धन्यवाद।

उत्तर

6

आप किसी भी वस्तुओं का उपयोग किए बिना एक फ़ाइल के लिए लिख, बस बनाया में VBA फ़ाइल उपकरण का उपयोग कर के साथ भाग प्राप्त कर सकते हैं:

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

में कवर किया जाता है क्योंकि यह बहुत VBA केंद्रित है मैं इस जवाब का फैसला किया। एरिक नेस का जवाब भी मान्य है !! – Craig

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 

आपको माइक्रोसॉफ्ट स्क्रिप्टिंग रनटाइम लाइब्रेरी का संदर्भ भी जोड़ना होगा। इसमें फ़ाइलसिस्टम ऑब्जेक्ट है।

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 

End Sub

+0

अभी भी OpenTextFile में पथ के साथ कुछ समस्या है। मुझे उस पथ पर लगातार नतीजे नहीं मिलते हैं, जिसमें कोई रिक्त स्थान नहीं है। – jim