Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datenübertragung aus Outlook nach Excel

Forumthread: Datenübertragung aus Outlook nach Excel

Datenübertragung aus Outlook nach Excel
08.05.2024 06:42:46
flyfisher
Hallo,

ich habe mich heute neu im Forum angemeldet. Nachdem ich schon viele tolle Lösungen aus dem Archiv für mich umbauen konnte, scheitere ich aber an diesem Problem.

ich habe ein Funktionspostfach in Outlook mit 3000 standatisierten emails (Schnell ansteigend)mit folgenden Inhalt:


Folgende Information oder Nachricht wurde über das Online-Formular 'Anmeldung Versammlung' am 05.05.2024 17:48:01 an Sie geschickt
Geschlecht:
männlich


Name:
Test Name


Vorname:
Test Vorname


Telefon:
+49 221 2222222


E-Mail:
XXXXX@gmail.com


Straße / Hausnummer:
Rue de France

Postleitzahl:
50935


Ort:
Köln


Einwilligung zur Verarbeitung meiner Daten:
Ich bin mit der Verarbeitung meiner personenbezogenen Daten zu dem in den Datenschutzhinweisen genannten Zweck einverstanden.


Gesendet über:
https://www.stadt-koeln.de/service/onlinedienste/anmeldung-hitzetelefon/index.html

Ich habe schon versucht einige Codes aus dem Forum umzuwandeln, bin aber gescheitert.

Ich würde gerne aus den 3000 Mails das Geschlecht, Name,Vorname, Telefon, E-Mail,Straße / Hausnummer, Postleitzahl und Ort in einer Exceldatei abspeichern um die Daten weiter zu verarbeiten.

Ich hoffe ich habe mein Problem verständlich beschrieben. Bei Fragen oder wenn eine Beispielmail benötigt wird bitte melden. Herzlichen Dank

Flyfisher
Anzeige

28
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenübertragung aus Outlook nach Excel
08.05.2024 09:24:30
Fennek
Hallo,

ich habe Deine Angaben in eine Mail an mich selbst geschickt, dann kann dieser Outlook-Code alle Angaben auslesen:


Sub Hitze()
Dim FLD As Folder, EML As MailItem, Ar, i As Long, Ret(8) As String

Set EML = ActiveExplorer.Selection(1)

Ar = Split(EML.Body, vbCrLf)

Ret(0) = EML.ReceivedTime
For i = 0 To UBound(Ar)
Debug.Print Ar(i)
Select Case Trim(Ar(i))
Case Is = "Geschlecht:": Ret(1) = Ar(i + 1)
Case Is = "Name:": Ret(2) = Ar(i + 1)
Case Is = "Vorname:": Ret(3) = Ar(i + 1)
Case Is = "Telefon:": Ret(4) = Ar(i + 1)
Case Is = "E-Mail:": Ret(5) = Ar(i + 1)
Case Is = "Straße / Hausnummer:": Ret(6) = Ar(i + 1)
Case Is = "Postleitzahl": Ret(7) = Ar(i + 1)
Case Is = "Ort:": Ret(8) = Ar(i + 1)

End Select
Next i

Debug.Print Join(Ret, ", ")
End Sub


M.M.n. sind folgende Aufagen zu lösen:

- Adressierung des Outlook-Ordner aus Excel
* in Outlook-Debug-Fenster "? activeexplorer.currentfolder.folderpath
- Unterscheidung von bearbeiteten Mail (kein doppelter Import)
- Bei so vielen Mail sollte alte/bearbeitete Mails übersprungen werden, damit die Laufzeit nicht zu lange wird

Der Code an sich ist nicht das Problem, aber die Abstimmung.


mfg
Anzeige
AW: Datenübertragung aus Outlook nach Excel
08.05.2024 14:56:09
flyfisher
Hallo Fennek,

ich bin wie gesagt totaler Anfänger. Ich habe den Code in Outlook in ein Modul gegeben und gestartet während ich im Test Folder war. Nix passiert. Was mache ich falsch?

Liebe Grüße

Matthias
AW: Debug-Fenster
08.05.2024 15:11:17
Fennek
Hallo,

das Ergebnis für die gerade ausgewählte Mail wird ins "Debug-Fenster" geschrieben. Aber zum Prüfen hilft es sehr den Code im Einzelschritt-Modus Taste "F-8" durchzugehen. Nur so sieht man, ob die Abfragen passen.

mfg

Später wird der Code aus Excel gestartet, Excel ist wie Outlook, wenn der Verweis gesetzt ist.
Anzeige
AW: Debug-Fenster
08.05.2024 17:45:10
flyfisher
Nachdem ich im Aktivitätsfenster den kompletten Mailbody 3 fach gesehen habe, wollte ich jetzt den Einzelschrittmodus nutzen. Jetzt sagt er mir die Makros sind im Projekt deaktiviert und im VBA Modus unter extras Marcos gibt es keinen Ordner Sicherheit......
AW: nur Code-Hilfe
08.05.2024 18:06:20
Fennek
Ein Forum kann Code kommunizieren, aber die Handhabung sollte der Fragende können/lernen.

Es gibt so viele Sicherheitseinstellungen im "Trust-Center", das ist ohne vor dem PC zu sitzen nicht zu erraten.
Anzeige
AW: nur Code-Hilfe
08.05.2024 18:47:45
flyfisher
Habs am 2. Rechner hinbekommen. Im Direktfenster stehen die Daten jetzt nebeneinander durch Komma getrennt. Gibt es die Möglichkeit das gesamte Postfach in z.B. 100 Mailschritten auf einmal in eine Exceldatei zu exportieren? Danke

LG

Matthias
AW: Excel-Code liest Outlook
08.05.2024 20:24:03
Fennek
Hier ist der Vorschlag für den Code in Excel, der Outlook-Mail auswertet. Deine Email-Adresse muss in die erste Zeile, der Ordner ggf. angepasst werden.


Option Explicit
Const iName As String = "[E-Mail-Adresse]"

Sub Hitze()
Dim FLD As Folder, EML As MailItem, Ar, i As Long, ii As Integer, Ret(8) As String
Dim lr As Long

Set FLD = GetNamespace("MAPI").Folders(iName).Folders("Posteingang").Folders("Hitze")

With FLD.Items
lr = Cells(Rows.Count, 1).End(xlUp).Row + 1
For i = 1 To .Count

Set EML = .Item(i)

Ar = Split(EML.Body, vbCrLf)

Cells(lr, 1) = EML.ReceivedTime

For ii = 0 To UBound(Ar)

Select Case Trim(Ar(ii))
Case Is = "Geschlecht:": Cells(lr, 2) = Ar(ii + 1)
Case Is = "Name:": Cells(lr, 3) = Ar(ii + 1)
Case Is = "Vorname:": Cells(lr, 4) = Ar(ii + 1)
Case Is = "Telefon:": Cells(lr, 5) = Ar(ii + 1)
Case Is = "E-Mail:": Cells(lr, 6) = Ar(ii + 1)
Case Is = "Straße / Hausnummer:": Cells(lr, 7) = Ar(ii + 1)
Case Is = "Postleitzahl:": Cells(lr, 8) = Ar(ii + 1)
Case Is = "Ort:": Cells(lr, 9) = Ar(ii + 1)

End Select
Next ii

EML.UnRead = False
lr = lr + 1

Next i
End With
End Sub


Die Beispiel-Datei kommt gleich.

mfg
Anzeige
AW: Excel-Code liest Outlook
09.05.2024 05:18:25
flyfisher
Guten Morgen,

danke für deine Geduld. Ich habe meine Emailadresse eingefügt. Der Verweis auf die Outlooklibary ist gesetzt. Der Ordner Hitze liegt im Ordner Posteingang und hat 7 ungelesene Mails. Der Code liegt in einer leeren Exceltabelle einem Modul. Im Direktfenster wird mir nichts angezeigt.

Ich eine Fehlermeldung:

in der Zeile 4: FLD As Folder, ist blau hinterlegt. Fehlermeldung: Fehler beim Kompilieren Benutzerdefinierter Typ nicht definiert.

Was mache ich falsch?

LG

Matthias



Anzeige
AW: Excel-Code liest Outlook
09.05.2024 06:53:25
Oberschlumpf
Hi Matthias,

"...in der Zeile 4: FLD As Folder, ist blau hinterlegt. Fehlermeldung: Fehler beim Kompilieren Benutzerdefinierter Typ nicht definiert..."

Verstehe ich nicht. Hast du denn auch die Datei von Fennek runtergeladen UND ausprobiert?

Hab die Datei runtergeladen, und so sehen die Einstellungen im VBE aus:
Userbild

Und wenn nun ich den Code starte, kommt nicht "deine Fehlermeldung", sondern ein Hinweis, dass in Zeile...


Set FLD = GetNamespace("MAPI").Folders(iName).Folders("Posteingang").Folders("Hitze")

...etwas nicht gefunden werden kann - was aber auch klar ist!

Denn der 1. Eintrag in .Folders = iName, ist natürlich noch falsch, da iName im Code von Fennek erst mal "nur" eine Variable darstellt.

Ok, und was gehört da nun rein??

Wenn du im Unterbrechungsmodus diesen Codeteil...


GetNamespace("MAPI")

...im VBE überwachst, und den Baum "Folders" aufklappst, dann erhältst du erst mal diese Ansicht:

Userbild

Und du ahnst es vielleicht: Öffne den Baum "Item1", es erscheint diese Ansicht:

Userbild

Überall dort, wo durchgestrichen oder übermalt ist, steht das Gleiche; für uns ist aber eigtl nur der Eintrag in "Name" interessent = deswegen hier in gelb übermalt.

Also:
anstelle von gelb steht dort meine echte, private Mailadresse UND der Zusatz " - Meins", also

meineMail@irgdwo.de - Meins

demzufolge muss ich diese Zeile...


Set FLD = GetNamespace("MAPI").Folders(iName).Folders("Posteingang").Folders("Hitze")

...umändern in...


Set FLD = GetNamespace("MAPI").Folders("meineMail@irgdwo.de - Meins").Folders("Posteingang").Folders("Hitze")


Ach so, und ich muss natürlich in Outlook im Ordner "Posteingang" einen neuen Ordner namens "Hitze" erstellen = Code läuft fehlerfrei durch!

Es reicht also vielleicht nicht, wenn du anstelle von "iName" nur deine Mailadresse einträgst, sondern du musst! anstelle von "iName" genau den selben Text eintragen, wie deine PST-Datei in Outlook heißt, in dem sich Posteingang und Hitze befinden.

Hilfts?
Muss es ja eigtl, denn bei mir läufts ja auch.

Ciao
Thorsten
Anzeige
AW: iName: Globale Variable
09.05.2024 09:06:49
Fennek
Hallo,

da die Email des TO eingegeben werden muss, wird diese am Beginn des Code mit

const iName as string = "[meine@mail.de]"

übergeben.
AW: Excel-Code liest Outlook
10.05.2024 10:49:30
Flyfisher
Hi, ja ich habe die Datei heruntergeladen. Ich muss das aber erst in eine Tabelle umwandeln und nachher den Code hinzufügen, da unsere IT alles mit Makros blockt.

Der Fehler bleibt in der Zeile:

Dim FLD As Folder, EML As MailItem, Ar, i As Long, ii As Integer, Ret(8) As String Dim lr As Long

LG
Anzeige
AW: Verweis setzen
10.05.2024 11:01:07
Fennek
Hallo,

damit Excel die Objecte aus Outlook "versteht" muss im VBE rechts-ober ein Verweis auf Outlook gesetzt werden.

mfg
AW: Verweis setzen
10.05.2024 11:21:21
flyfisher
Der Verweis war unter Extras gesetzt. Es bleibt dabei. Fehlermeldung: Fehler beim Kompilieren Syntaxfehler

Oder muß der Verweis noch einmal woanders gesetzt werden?

Ich habe aus Verzweiflung auch schon 2 Hitzefolder in Outlook angelegt. Einen als Unterordner im Posteingang und einen als Direktordner unter dem Mailordner. Aus mit jeweils nur einem Hitzeordner an beiden Positionen.
Anzeige
AW: Verweis setzen
10.05.2024 11:28:50
Oberschlumpf
Hi,

sorry, ich bin wieder raus.

Entweder macht dir eure IT (Sicherheit) einen/einige Strich(e) durch die Rechnung, oder...
...du mit fast gar keine Ahnung von Excel/VBA verstehst uns einfach nicht.

Denn, WENN du den Outlook-Verweis - richtig - gesetzt hast, dann KANN ES NICHT mehr zu dem Fehler bei...
Dim FLD As Folder, usw
...kommen!

oder eben die IT lässt solche Verweise nicht zu...aber da kann ich eben auch nich helfen.

Ciao
Thorsten
Anzeige
AW: Late Binding?
10.05.2024 11:34:29
Fennek
Es gibt zwei Möglichkeiten mit Excel Outlook anzusprechen:

- early binding (mit Verweis)
- late binging

Dabeit wird Outlook explizit angesprochen


dim OL as Object: set ol = CreateObject("Application.Outlook")


Danach wird allen Outlook-Obecten eine "OL." vorangestellt, z.B.


dim FLD as Object
set FLD = OL.Activeexplorer.currentFolder


Der Code ist aus dem Gedächtnis, bitte nutze eine Suchmaschine deines Vertrauens.

mfg
Anzeige
AW: Verweis setzen
10.05.2024 11:31:31
flyfisher
Wenn es der fehlende Verweis wäre, wäre es dann ein Syntaxfehler beim Kompilieren?
AW: Verweis setzen
10.05.2024 12:00:48
flyfisher
Ich habe ein Ticket bei der IT aufgemacht. Melde mich wieder nachdem ich eine Antwort bekommen habe. Das wird aber wahrscheinlich dauern. Danke schon einmal an Alle die sich die Zeit genommen haben mich zu unterstützen.

Liebe Grüße

Matthias
Anzeige
AW: iName: Globale Variable
09.05.2024 14:45:11
Oberschlumpf
Hi,

ja, jetzt, wo du es erwähnst...
Ich hatte die Const-Zeile gar nicht gesehen.

Aber man kann die Mailadr, bzw Name der PST-Datei ja auch direkt eingeben = somit spart man sich eine Codezeile.
Und nur Mailadresse eingeben funktioniert, wie beschrieben, zumindest auf meinem PC nicht; es muss der Name der PST-Datei sein.

Wieso nutzt eigtl du nicht auch den Code-Formatier-Button hier im Forum? Dann könnte auch dein gezeigter Code besser lesbar sein.
Ja, ich weiß, du musst das nicht nutzen, aber schöner wäre es ;-)

Ciao
Thorsten
Anzeige
AW: iName: Globale Variable
10.05.2024 09:10:13
Flyfisher
Danke das Ihr mich weiter unterstützt,sogar am Feiertag. Kann es eventuell sein, das ich die Fehlermeldung bekomme, weil es ein exchange Konto ist. Soll ich das mal an meinem Privaten Rechner mit einer einer Einzeplatzlizenz probieren, oder ist das egal?

Lg

Matthias
AW: ExChange: im Prinzip ok
10.05.2024 10:04:46
Fennek
Hallo,

sofern die Referenzierung stimmt, macht es keinen Unterschied, ob IMAP oder ExChange.

mfg
Anzeige
AW: iName: Globale Variable
10.05.2024 09:37:40
Flyfisher
Wie funktioniert das mit dem Code Formatier Button? Wie bekomme ich Screenshots in den Beitrag?
AW: iName: Globale Variable
10.05.2024 10:04:30
Oberschlumpf
dafür mach bitte 2 neue Beiträge auf, denn beide Fragen haben so gar nix mit der hier zuerst gestellten Frage zu tun.

Und mein Hinweis auf den Code Formatier Button war an Fennek, nich an dich gerichtet
Anzeige
AW: Datenübertragung aus Outlook nach Excel
08.05.2024 14:58:25
flyfisher
Sorry, ich bin ein Stoffel, aber ich habe völlig vergessen mich für Deine Hilfe zu bedanken.


Liebe Grüße

Matthias

AW: Datenübertragung aus Outlook nach Excel
08.05.2024 15:32:15
flyfisher
Hallo Uwe,

bei mir heißt der Ordner nicht Persönlicher Ordner sondern ist meine Emailadresse. Die hatte ich auch eingefügt. ich sende dir gerne einen Screenshot per PN. Die Email würde ich ungern öffentlich machen.

Liebe Grüße

Matthias

Anzeige
AW: Datenübertragung aus Outlook nach Excel
08.05.2024 09:57:30
Alwin Weisangler
Hallo,

das dürfte, wenn man weiß in welchem Verzeichnis in Outlook die Mails liegen, kein großes Ding sein den Body der Mails, darum dreht sich deine Frage, auszulesen.
Vor einiger Zeit hatte ich hier schon mal was auf zu diesem Thema hinterlassen.
Es wird entsprechend der Anzahl der Mails ein Array dimensioniert, wo in einer 2. Schleife der Body der Mails in ein Array eingelesen wird.
Da stehen dann erst mal die Rohdaten zur Verfügung, welche noch nachbearbeitet/gefiltert werden müssen.
Diese Prozedur ist Early Binding angelegt um die IntelliSense von VBA für die Programmierung zu nutzen.
Du musst dazu die Bibliothek "Microsoft Outlook 16.0 Object Library" in Extras aktivieren.

In diesem Beispiel wird im "Persönliche Ordner" das Verzeichnis "Test" ausgelesen.


Option Explicit

Sub BodyAusGeloeschtenEmailsLesen()
Dim appOut As Outlook.Application
Dim OutMail As Outlook.MailItem
Dim ONS As Outlook.Namespace
Dim MyFolder As Outlook.Folder
Dim tmpMail, arr(), i&, iZeilen&, iItems&

Set appOut = New Outlook.Application
Set OutMail = appOut.CreateItem(olMailItem)
Set ONS = appOut.GetNamespace("MAPI")
Set MyFolder = ONS.Folders.Item("Persönliche Ordner").Folders("Test") ' setzten des auszulesenden Ordners

For Each OutMail In MyFolder.Items ' Schleife zum lesen der maximalen Dimensionierung des Arrays
tmpMail = Split(OutMail.Body, vbCrLf)
iItems = iItems + 1
If UBound(tmpMail) > iZeilen Then iZeilen = UBound(tmpMail)
Next OutMail
ReDim arr(1 To iItems + 1, 1 To iZeilen) ' Dimensionierung des Arrays
iItems = 0
For Each OutMail In MyFolder.Items ' Schleife zum füllen des Arrays
tmpMail = Split(OutMail.Body, vbCrLf)
iItems = iItems + 1
For i = 1 To UBound(tmpMail)
arr(iItems, i) = tmpMail(i - 1)
Next i
Next OutMail
Tabelle1.Cells(1, 1).Resize(UBound(arr, 1), UBound(arr, 2)) = arr ' Ausgabe des Inhalts des Arrays ins Tabellenblatt
End Sub


Gruß Uwe




Anzeige
AW: Datenübertragung aus Outlook nach Excel
08.05.2024 14:47:25
flyfisher
Hallo Uwe,

danke für deine schnelle Antwort. Ich habe eine leere Exel erstellt und deinen Code in ein Modul geladen. Ich habe den Verweis gesetzt. Ich bekomme eine Fehlermeldung in der 1. Dim Zeile: Benutzerdefinierter Typ nicht definiert.

Liebe Grüße

Matthias
AW: Datenübertragung aus Outlook nach Excel
08.05.2024 15:14:33
Alwin Weisangler
Hallo Matthias,

schau ins Outlook ob einer der Wurzelordner "Persönliche Ordner" heißt. Dann existiert mit großer Wahrscheinlichkeit der Unterordner "Test" nicht.
Du musst diese Dinge schon anpassen, um auf die darin abgelegten Mails zugreifen zu können.

Userbild
Zum Test hatte ich mit diesen Unterordner angelegt.

Gruß Uwe


Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige