PDA

Vollständige Version anzeigen : Outlook-Exportdateien per VBA auslesen


tommy1973
14.05.2013, 15:40
Hallo zusammen,

ich möchte mal fragen, ob es programmtechnisch (per VBA) eine Möglichkeit gibt, Outlook-Exportdateien - und zwar die *.msg-Dateien - zu zerfiseln. Damit meine ich: Die Email per VBA in ihre Einzelheiten zu zerlegen und dann die Inhalte so abzuspeichern, wie ich es brauche. Also: Den Email-Text in eine Access-Tabelle und die eingebetteten Bilder und Attachments ins Dateisystem, also in einen Dateiordner?

Oder ist das ein nicht zu erfüllender Traum?

Hintergrund ist der: Ich möchte irgendwie an die eingebetteten Bildobjekte in den sogenannten Rich-Text-Emails. Die kriege ich leider nicht, wenn ich über das normale Outlook-Objekt auf die Mails zugreife (geht nur bei HTML-Emails, die Bilder im Text haben).

Gruß

Thomas

mumpel
14.05.2013, 16:49
Hallo!

Mit Outlook durchaus möglich.. Im Beispielcode werden Anhänge im Laufwerk C gespeichert, Body und Betreff in einer Exceldatei. Musst Du nurnoch an Access anpassen, Access gehört nicht zu meinem Spezialgebiet. Es handelt sich allerdings um ein Outlook-Makro, kein Access-Makro.

<blockquote><pre style='border:thin solid #FF8000; padding:12px 24px; margin-left:12px; color:#000000; overflow:auto; '><span style='color:#0000EE'>Option</span> <span style='color:#0000EE'>Explicit</span> <span style='color:#0000EE'>Sub</span> Anh&auml;ngeUndMailInhaltSpeichern() <span style='color:#0000EE'>Dim</span> xlApp <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>Object</span> <span style='color:#0000EE'>Dim</span> xlRange <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>Long</span> <span style='color:#0000EE'>Dim</span> xlBook <span style='color:#0000EE'>As</span> Excel.Workbook <span style='color:#0000EE'>Dim</span> xlSheet <span style='color:#0000EE'>As</span> Excel.Worksheet <span style='color:#0000EE'>Dim</span> SaveInPath <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>String</span> <span style='color:#0000EE'>Dim</span> obj <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>Object</span> SaveInPath = <span style='color:#FF0000'>&quot;C:\&quot;</span> <span style='color:#0000EE'>If</span> TypeOf Application.ActiveWindow <span style='color:#0000EE'>Is</span> Outlook.Explorer <span style='color:#0000EE'>Then</span> <span style='color:#0000EE'>Set</span> obj = Application.ActiveWindow <span style='color:#0000EE'>Set</span> obj = obj.Selection(<span style='color:#DDAA00'>1</span>) <span style='color:#0000EE'>Else</span> <span style='color:#0000EE'>Set</span> objInspector = ActiveInspector objInspector.Activate <span style='color:#0000EE'>If</span> objInspector.IsWordMail <span style='color:#0000EE'>Then</span> <span style='color:#0000EE'>Set</span> obj = Application.ActiveInspector.CurrentItem <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>If</span> <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>If</span> <span style='color:#0000EE'>Rem </span><span style='color:#008000'>Anh&auml;nge speichern </span> <span style='color:#0000EE'>With</span> obj intAnlagen = .Attachments.Count <span style='color:#0000EE'>If</span> intAnlagen &gt; <span style='color:#DDAA00'>0</span> <span style='color:#0000EE'>Then</span> <span style='color:#0000EE'>For</span> i = <span style='color:#DDAA00'>1</span> <span style='color:#0000EE'>To</span> intAnlagen SaveInAsFile = .Attachments.Item(i).Filename .Attachments.Item(i).SaveAsFile SaveInPath & <span style='color:#FF0000'>&quot;\&quot;</span> & SaveInAsFile <span style='color:#0000EE'>Next</span> i <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>If</span> <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>With</span> <span style='color:#0000EE'>Rem </span><span style='color:#008000'>Subject und Body speichern </span> <span style='color:#0000EE'>Set</span> xlApp = <span style='color:#0000EE'>New</span> Excel.Application <span style='color:#0000EE'>With</span> xlApp .Visible = <span style='color:#0000EE'>True</span> .Workbooks.Open Environ(<span style='color:#FF0000'>&quot;USERPROFILE&quot;</span>) & <span style='color:#FF0000'>&quot;\Documents\0-Lizenzen\HP_Lizenzen.xlsb&quot;</span> <span style='color:#0000EE'>Set</span> xlBook = xlApp.Workbooks(<span style='color:#FF0000'>&quot;HP_Lizenzen.xlsb&quot;</span>) <span style='color:#0000EE'>Set</span> xlSheet = xlBook.Sheets(<span style='color:#FF0000'>&quot;Tabelle1&quot;</span>) <span style='color:#0000EE'>With</span> xlBook <span style='color:#0000EE'>With</span> xlSheet xlRange = _ .Range(<span style='color:#FF0000'>&quot;A&quot;</span> & .Rows.Count).End(xlUp).Row + <span style='color:#DDAA00'>1</span> .Range(<span style='color:#FF0000'>&quot;A&quot;</span> & xlRange) = obj.Subject .Range(<span style='color:#FF0000'>&quot;B&quot;</span> & xlRange) = obj.Body <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>With</span> .Save .Close <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>With</span> .Quit <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>With</span> <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>Sub</span><br><br><hr style='color: #FF8000; background-color: #3300B2; height: 1.5px; border: solid blue;'><br><br><p style='font-size: 8px; font-family: Verdana; text-align: right;'><a href='http://www.rholtz-office.de/counters/getfile.php?id=4' target='_blank'>VBA/HTML - CodeConverter f&uuml;r Office-Foren</a><br>AddIn f&uuml;r Excel/Word 2000-2010 - komplett in VBA geschrieben von <a href='http://www.office-loesung.de/viewprofile19265.php'>Lukas Mosimann</a><br />Projektbetreuung durch mumpel</p><br /><br />Code erstellt und getestet in Office 15</pre></blockquote>

Gruß, René

mumpel
14.05.2013, 17:01
Nachtrag:

Du kannst die Rich-Text-Mail auch als HTML-Mail speichern, bzw. dessen Bodyformat ändern. Anschließend kannst Du sie "normal" behandeln. Ungetestet.

<blockquote><pre style='border:thin solid #FF8000; padding:12px 24px; margin-left:12px; color:#000000; overflow:auto; '><span style='color:#0000EE'>Sub</span> SaveRichtextMailAsHTMLMail() <span style='color:#0000EE'>Dim</span> obj <span style='color:#0000EE'>As</span> <span style='color:#0000EE'>Object</span> <span style='color:#0000EE'>If</span> TypeOf Application.ActiveWindow <span style='color:#0000EE'>Is</span> Outlook.Explorer <span style='color:#0000EE'>Then</span> <span style='color:#0000EE'>Set</span> obj = Application.ActiveWindow <span style='color:#0000EE'>Set</span> obj = obj.Selection(<span style='color:#DDAA00'>1</span>) <span style='color:#0000EE'>Else</span> <span style='color:#0000EE'>Set</span> objInspector = ActiveInspector objInspector.Activate <span style='color:#0000EE'>If</span> objInspector.IsWordMail <span style='color:#0000EE'>Then</span> <span style='color:#0000EE'>Set</span> obj = Application.ActiveInspector.CurrentItem <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>If</span> <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>If</span> <span style='color:#0000EE'>Rem </span><span style='color:#008000'>Anh&auml;nge speichern </span> <span style='color:#0000EE'>With</span> obj <span style='color:#0000EE'>If</span> TypeOf obj <span style='color:#0000EE'>Is</span> Outlook.MailItem <span style='color:#0000EE'>Then</span> <span style='color:#0000EE'>With</span> obj .BodyFormat = olFormatHTML .Save <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>With</span> <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>If</span> <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>With</span> <span style='color:#0000EE'>End</span> <span style='color:#0000EE'>Sub</span><br><br><hr style='color: #FF8000; background-color: #3300B2; height: 1.5px; border: solid blue;'><br><br><p style='font-size: 8px; font-family: Verdana; text-align: right;'><a href='http://www.rholtz-office.de/counters/getfile.php?id=4' target='_blank'>VBA/HTML - CodeConverter f&uuml;r Office-Foren</a><br>AddIn f&uuml;r Excel/Word 2000-2010 - komplett in VBA geschrieben von <a href='http://www.office-loesung.de/viewprofile19265.php'>Lukas Mosimann</a><br />Projektbetreuung durch mumpel</p><br /><br />Code erstellt und getestet in Office 15</pre></blockquote>

tommy1973
15.05.2013, 12:31
Hallo mumpel,

das ist genau das, wonach ich gesucht habe. Besten Dank.

Mit der Konvertierung in Richting HTML bin ich so noch nicht ganz zufrieden

Hatte gehofft, ich könnte eine RichText-Email mit eingebetteten Bildern umwandeln in HTML mit eingebetteten Bildern und käme so an die fiesen OLE-Bildobjekte, wenn ich danach noch einmal alle Attachments speichere.

Das wäre wirklich traumhaft gewesen. Aber ich habe ja die RTF-Export-Dateien und da sind die OLE-Bildobjekte auch drin.

Gruß

Tommy