Clever-Excel-Forum

Normale Version: Daten aus Mails nach Excel exportieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Hallo ich brauce wieder mal Hilfe,

ich bekommen über einen Formmailer mehrere hundert Mails. Nun möchte ich aus diesen Mails immer die Daten der jeweiligen gleichen Position nach Excel in eine Zeile (fortlaufend) exportieren. Bin hier mit meinen Makrokenntnissen am Ende!

Geht das?
Gruß Kreck2
Outlook 2010 Excel 2010
Hallo Kreck2,

ich denke, das geht. Wie sieht denn Dein email aus, welche Position soll es denn sein? Im Netz gibt es einige Beispiele, die man auf Deine Anforderung anpassen kann.
Anbei mal konkret!
So sehen ankommende Mails aus und Wert soll zu Excel in Zeile 2 Spalte wie beschrieben.
Mit der nächsten Mail dann soll sich Tabelle füllen.

Von: Mail Transfer Agent [mailto:mailserver@formmailer.info] Im Auftrag von Kreck2
Gesendet: Freitag, 6. Februar 2015 11:47
An: Muster.Max
Betreff: [ACHTUNG! Absenderadresse kann gefaelscht sein - bitte ueberpruefen!] Ticket_ID ( 6/02/2015) 6/02/2015 zu B2
Die Formulardaten wurden am 06.02.2015 um 11:46 Uhr übertragen Datum und Zeit zu A2
--------------------------------------------------------------------------
Absender Mail: Max.Muster@web.de
verstanden: ON
eingewilligt: ON
Anrede: Herr wert hinter:E2
Name: Muster wert hinter:zu F2
Vorname: Max wert hinter:zu G2
Geburtstag: 01.01.1980 wert hinter:zu H2
Strasse: Musterstr. 8 wert hinter: zu I2
Plz: 01999 wert hinter:zu J2
Ort: Musterstadt wert hinter: zu K2
Mail_wiederholt: Max.Muster@web.de wert hinter: zu L2
alter1: alle Fahrer sind mind. 23 Jahre alt wert hinter: zu M2
Telefon: 0800/1111 wert hinter: zu N2
fahrzeug_art1: Kleinkraftrad bis 45 km/h wert hinter: zu O2
fahrzeug_hersteller1: Simson wert hinter:zu P2
fahrzeug_schlüssel1: 1221112 wert hinter: zu Q2
fahrzeug_datum1: 1958 wert hinter:zu R2
vorvertrag1: AES212 S2
fahrzeug_art2: kein weiteres Fahrzeug
fahrzeug_hersteller2:
fahrzeug_schlüssel2:
fahrzeug_datum2: Bitte wählen
vorvertrag2:
fahrzeug_art3: kein weiteres Fahrzeug
fahrzeug_hersteller3:
fahrzeug_schlüssel3:
fahrzeug_datum3: Bitte wählen
vorvertrag3:
fahrzeug_art4: kein weiteres Fahrzeug
fahrzeug_hersteller4:
fahrzeug_schlüssel4:
fahrzeug_datum4: Bitte wählen
vorvertrag4:
angebot: nein wert hinter: zu U2
beratung: keine weitere Beratung / Angebot wert hinter: zu V2
zustimmung: ON wert hinter: zu W2
prüfun_ja: ON
1 x (1) 1 Fahrzeug wert aus (1) zu D2
Einzelpreis: 48.85 Euro -> Zwischensumme: 48.85 Euro
1 x Versand per Vorkasse 3,25Euro Porto (Einschreiben) 3,25 zu T2
Hallo!

Das Thema hatte ich doch erst vor Kurzem in einem anderen Forum. ;)

Denn Code musst Du noch anpassen. Der Body wird per Array ausgelesen. Ein Array beginnt immer bei 0. Einen Verweis auf dei Excel Object Library setzen.

Option Explicit


Public Sub AnmeldedatenEintragen()
Dim xlApp        As Object
Dim xlRange      As Long
Dim xlBook       As Excel.Workbook
Dim xlSheet      As Excel.Worksheet
Dim vntTempArray As Variant
Dim obj As Object

 Select Case True
        Case TypeOf Application.ActiveWindow Is Outlook.Inspector
             Set obj = Application.ActiveInspector.CurrentItem
        Case Else
             With Application.ActiveExplorer.Selection
                  If .Count Then Set obj = .Item(1)
             End With
                 If obj Is Nothing Then Exit Sub
 End Select

vntTempArray = Split(obj.Body, vbCrLf)

Set xlApp = New Excel.Application

        With xlApp
             .Visible = True
             .Workbooks.Open Environ("USERPROFILE") & "\Documents\Ziel\Tester.xlsx"
                 Set xlBook = xlApp.Workbooks("Tester.xlsx")
                 Set xlSheet = xlBook.Sheets("Tabelle1")
                     With xlBook
                          With xlSheet
                               xlRange = _
                                    .Range("A" & .Rows.Count).End(xlUp).Row + 1
                                    .Range("A" & xlRange) = Replace(vntTempArray(3), "Anrede: ", "")
                                    .Range("B" & xlRange) = Replace(vntTempArray(4), "Titel: ", "")
                                    .Range("C" & xlRange) = Replace(vntTempArray(5), "Vorname: ", "")
                                    .Range("D" & xlRange) = Replace(vntTempArray(6), "Nachname: ", "")
                                    .Range("E" & xlRange) = Replace(vntTempArray(7), "Praxis: ", "")
                                    .Range("F" & xlRange) = Replace(vntTempArray(8), "Strasse: ", "")
                                    .Range("G" & xlRange) = Replace(vntTempArray(9), "PLZ/Ort: ", "")
                                    .Range("H" & xlRange) = Replace(vntTempArray(10), "Telefon: ", "")
                                    .Range("I" & xlRange) = Replace(vntTempArray(11), "E-Mail: ", "")
                                    .Range("I" & xlRange) = Replace(vntTempArray(12), "Teilnehmer: ", "")
                          End With
                        .Save
                        .Close
                     End With
                .Quit
        End With

ende:


xlRange = 0
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
End Sub


VBA/HTML - CodeConverter für Office-Foren, AddIn für Office 2002-2013 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:mumpel

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


Gruß, René
Danke mumpel,

bin schon wieder fazsiniert wie das so geht. Aber ich als Laie, der das das erste mal tut, bin im Moment überfordert mit
"Einen Verweis auf dei Excel Object Library setzen" und was meint er mit Anmeldedaten Eintragen?

Bin ich hier der einzige doofe?
Gruß Kreck2
Hallo Kreck,

im VBA-Editor hast Du oben bei den Menüs Extras, und das klappst Du auf und dort gibt es die Verweise. Da ist eine lange Liste drin, und Du suchst den betreffenden raus.

In Deinem Verzeichnis Dokumente müsstest Du einen Ordner Ziel anlegen, oder die codezeile entsprechend Deinen Anforderungen ändern.

Das Makro heißt nur Anmeldedaten einfügen.
Okay habe ich alles getan.
Bekomme nun die Info
Fehler beim Kompilieren
Benutzerdefinierter Typ nicht definiert!

TypeOf Application.ActiveWindow Is Outlook.Inspector
Wo hast Du den Code eingefügt? Der Code gehört in Outlook, nicht in Excel.
Hallo mumpel,

ich habe einen Ordner angelegt Documents\Ziel\Tester.xlsm
Im VBA Editor: Verweise Häkchen bei Excel 14.0 Objekt Library gesetzt. Wenn ich auf Durchsuchen gehe lässt er mich aber
im Ordner Documents\Ziel\Tester.xlsm nichts speichern. (Name steht im Konflikt mit vorhandenen Modul, Projekt oder vorhandener Objektbibliothek)
Wie soll ich in Qutlook Code einfügen
Hi,

(06.02.2015, 20:56)Kreck2 schrieb: [ -> ]ich habe einen Ordner angelegt Documents\Ziel\Tester.xlsm
[...]
lässt er mich aber im Ordner Documents\Ziel\Tester.xlsm nichts speichern.

ist das "Tester.xlsm" der Name des letzten Ordners oder eine Excel-Datei? Wenn letzteres, wie willst Du eine Datei in eine Datei speichern?

Code:
.Workbooks.Open Environ("USERPROFILE") & "\Documents\Ziel\Tester.xlsx"

Im Makro ist das "Tester.xlsx" die Excel-Datei, der Pfad hört mit dem "\" auf. Dort oben wird ein "Workbook" = eine Excel-Datei geöffnet.
Seiten: 1 2 3