Html Tabelle aus Email auslesen

Moderator: ModerationP

Html Tabelle aus Email auslesen

Beitragvon Johannes1990 » 06. Apr 2018, 10:56

Office 2010

Hallo zusammen,


ich versuche Google Alerts Mails automatisch auszuwerten und die Ergebnisse in Excel zu speichern.
Den Rahmen habe ich schon, also Mails werden automatisch ausgelesen und in eine Excel Tabelle übertragen, allerdings ohne Inhalt bzw nur das Datum der Mail.
Code: Alles auswählen
Sub Neue_Google_Alerts_Mail(sID As String)

    Dim mIt As Outlook.MailItem
    Dim dtmItcreation As Date
    Dim i As Long
   
    'NICHT FERTIG~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    'Ende Deklaration. Hier werden weitere deklarationen hinzugefügt
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
    If NS Is Nothing Then GL.set_namespace
    Stmp = TypeName(NS.GetItemFromID(sID))
    If Stmp = "MailItem" Then
        Set mIt = NS.GetItemFromID(sID)
    Else
        MsgBox "Die neue Mail ist vom unerwarteten Typ " & vbLf & Stmp & vbLf & _
        " und kann mit dem existierenden Makro nicht verarbeitet werden.", _
        vbCritical, "Abbruch"
        Exit Sub
    End If
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    'Ende ABSCHNITT 1, die Mail ist identifiziert
    'MsgBox mIt.Subject    ' Msgbox sID
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    If mIt.SenderName <> "Google Alerts" Then Exit Sub
   
    'NICHT FERTIG~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    'Ende ABSCHNITT 2, nur Google Alerts werden berücksichtigt
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    dtmItcreation = mIt.CreationTime
           
  ' NICHT FERTIG~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ' Ende ABSCHNITT 3 - alle Werte, die nach Excel geschrieben
  ' werden müssen liegen jetzt in einzelnen Variablen vor
  ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  mIt.UnRead = False
  Stmp = ""
  For i = 1 To mIt.Parent.Folders.Count
    If mIt.Parent.Folders(i).Name = "Erledigt" Then
        Stmp = "OK"
        Exit For
    End If
  Next i
  If Len(Stmp) = 0 Then mIt.Parent.Folders.Add "Erledigt"
  mIt.Move mIt.Parent.Folders("Erledigt")
  Set mIt = Nothing
  ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ' Ende ABSCHNITT 4 - Mit der Mail sind wir fertig
  ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
  If XL Is Nothing Then GL.set_XL
  XL.Visible = True
  For Each XW In XL.Workbooks
    If XW.FullName = "C:\Users\36131\Desktop\TEST.xlsx" Then
        Exit For
    End If
  Next XW
  If XW Is Nothing Then
    Set XW = XL.Workbooks.Open("C:\Users\36131\Desktop\TEST.xlsx")
  End If
  XW.Activate
  Set XS = XW.Worksheets("Ergebnisse")
  XS.Activate
  XS.Select
 
  ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ' Ende ABSCHNITT 5 - Excel ist bereit
  ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  i = XL.WorksheetFunction.CountA(XS.Columns(1)) + 1
  XS.Cells(i, 1) = dtmItcreation ' Datum
 
 
 
  ' NICHT FERTIG~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ' Ende ABSCHNITT 6 - Excel ist gefüllt
  ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


 
End Sub

Anmerkung: Den Code habe ich nicht komplett selbst geschrieben, sondern aus dem Internet zusammengestellt.

Die Google Alerts werden in Tabellenform verschickt mit dem Suchbegriff des Alerts als Überschirft und dann den gefundenen Artikeln darunter.

Bild
Hier ein Beispielbild wie so eine Mail aussieht.

Ziel ist jeden Artikel in eine Excel Zeile zu schreiben mit Datum der Mail, der Alert Überschrift, der obere Quelle (Also z.B. Finanzen oder Nachrichten), der Artikel Überschrift, der Artikel Quelle (steht direkt unter der Überschrift), der hinterlegten URL (ist in der Überschrift hinterlegt) und des kurzen Text abstract der darunter steht. In einer Mail kann es also mehrere Artikel geben, die dann jeweils in eine neue Excel Zeile geschrieben werden sollen (Das Datum der Mail und die Alert Überschirft müssen dann automatisch runterkopiert werden).

Hat jemand eine Idee wie das funktionieren könnte? Ich habe mir überlegt in Zeile 2 Anzufangen mit der Überschrift (das sollte noch relativ einfach sein), dann nach den oberen Quellen suchen (z.B. Finanzen oder Nachrichten), und dann die darunterliegenden Zeilen auszuwerten mit z.B. suche nach Hyperlinks und Textfarbe etc um die Positionen der gesuchten Dinge zu bestimmen. Speziell zur Auswertung von Html Tabellen in Outlook Mails habe ich leider nichts im Internet gefunden bisher...

Ich bin ein VBA Anfänger, deshalb auf eure Hilfe angewiesen :)

Vielen Dank im Voraus!

Viele Grüße
Johannes
Johannes1990
 

Re: Html Tabelle aus Email auslesen

Beitragvon DerHoepp » 06. Apr 2018, 11:15

Hallo Johannes,

du musst letztlich den HTML-Quelltext parsen. Um dir da aber zu helfen, müsstest du den mal beispielhaft hier einstellen.

Viele Grüße
derHöpp
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8139
Registriert: 14. Mai 2013, 11:08

Re: Html Tabelle aus Email auslesen

Beitragvon Johannes1990 » 06. Apr 2018, 11:22

Hallo derHöpp,

auf die Idee bin ich gerade auch gestoßen. Ich habe mal eine Mail im IE geöffnet und den Quelltext anzeigen lassen

Code: Alles auswählen
...


Edit < Peter >:
Code gelöscht da hier der Spamfilter anschlägt. Den Code habe ich in die angehängte Zip-Datei als TXT gepackt.




Das positive ist, dass es einen Metabereich gibt. 90% (wäre erstmal gut genug) meiner benötigten Informationen befinden sich unter "widgets". D.h. Ich könnte z.B. nach "title" suchen in einem Loop bis es keine "title" mehr gibt und der Bereich mit "]" geschlossen wird?

Vielen Dank für die Hilfe! :)

Viele Grüße
Johannes
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Johannes1990
 


Zurück zu Outlook Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste