Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1704to1708
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Outlook auslesen und ergänzen

Outlook auslesen und ergänzen
12.08.2019 22:50:18
Christopher
Hallo zusammen,
ich bin auf der Suche zu o.g. Thema.
Es handelt sich um das Thema: Krankheit von Mitarbeitern.
Wenn sich ein Mitarbeiter bei uns Krankmeldet, schreibt die jeweilige Führungskraft an den Verteiler der Führungskräfte eine E-Mail.
Es gibt mehrere Versionen:
Betreff: Krankmeldung - Bill Gates
Hallo zusammen,
o.g. MA meldet sich für heute krank: 12.08.2019

---
Betreff: Krankmeldung - Bill Gates
Hallo zusammen,
o.g. MA meldet sich krank
von: 12.08.2019
bis: 15.08.2019
so - es kann aber auch sein, dass der Mitarbeiter sich morgen wieder krankmeldet.
Das Fazit ist - macht er das mehrfach und es betrifft mehrere Mitarbeiter, verliert man schnell die Übersicht.
Ich muss im Nachgang ein Krankenrückkehrgespräch mit dem Mitarbeiter führen - und möchte sicherstellen, niemanden vergessen zu haben.
Was ich suche und benötige:
Ich möchte ein Excel-Sheet, was mein Outlook durchsucht nach "Krankmeldung"
und mir dann den Namen ausgibt.
Das Format im Betreff ist einzigartig und wird sonst NIE verwendet.
Es ist immer "Krankmeldung: Bill Gates".
Meldet sich Bill Gates 3x bei uns krank, möchte ich dass das Sheet mir sagt
Bill Gates Krankmeldungen:
12.08.2019
13.08.2019
14.08.2019
ich möchte aber auch, dass wenn Bill Gates sich z.B. 2x1 Tag krank meldet und dann 1x 4 tage es so dort steht:
Bill Gates Krankmeldungen:
12.08.2019
13.08.2019
14.08.2019 - 18.08.2019
Ich habe dafür einfach zu wenig Ahnung von Excel / VBA - als dass ich es selbst irgendwie hinbekommen könnte.
Bin dankbar für Unterstützung. :)

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: im Prinzip möglich, aber ...
13.08.2019 08:22:33
Fennek
Hallo,
es sollte möglich sein, aber so einen Code zu entwickeln übersteigt schnell die Möglichkeiten eines Forums.
Sieh dir folgenden link an, ob dort für deine Frage passende Ansätze sind. Bei kleinen Code-Verbesserungen kann dir hier vermutlich geholfen werden.
http://snb-vba.eu/VBA_Outlook_external_en.html
mfg
AW: im Prinzip möglich, aber ...
13.08.2019 11:41:15
mumpel
Wir haben diese Möglichkeiten. So kompliziert ist das nicht.
AW: Outlook auslesen und ergänzen
13.08.2019 11:14:57
mumpel
Hallo!
Hier mal ein Beispielcode wie ich in VBA eine immer gleich aufgebaute Email auslese und damit eine Exceltabelle fülle.
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\0-Lizenzen\HP_Lizenzen.xlsb"
                 Set xlBook = xlApp.Workbooks("HP_Lizenzen.xlsb")
                 Set xlSheet = xlBook.Sheets("Tabelle1")
                     With xlBook
                          With xlSheet
                               xlRange = _
                                    .Range("A" & .Rows.Count).End(xlUp).Row + 1
                                    .Range("A" & xlRange) = vntTempArray(0)
                                    .Range("B" & xlRange) = vntTempArray(1)
                                    .Range("C" & xlRange) = vntTempArray(3)
                                    .Range("D" & xlRange) = vntTempArray(4)
                                    .Range("E" & xlRange) = vntTempArray(5)
                                    .Range("F" & xlRange) = vntTempArray(6)
                                    .Range("G" & xlRange) = vntTempArray(7)
                                    .Range("H" & xlRange) = vntTempArray(2)
                                    .Range("I" & xlRange) = vntTempArray(8)
                          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, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:René Holtz

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

Gruß, René
Anzeige
AW: Outlook auslesen und ergänzen
13.08.2019 12:58:19
fcs
Hallo Christtopher,
für ein Makro, das von Outlook aus gestartet wird hat mumpel dir ja ein Beispiel gezeigt.
Von Excel aus kann es etwa wie folgt aussehen. Hab es aber nicht getetstet. Für die Auswertng der Zeilen mit den Datumsangaben ist evtl. noch etwas Feinschliff nötig.
LG
Franz
'Erstellt unter Excel 2010 - aber nicht getestet in Verbindung mit MS Outlook
Sub Krankmeldungen()
Dim objOL_App As Object 'Outlook.Application
Dim objOL_Mail As Object ' Outlook.MailItem
Dim sSubject As String, sBody As String, sName As String, sDatum As String
Dim arrBody, iLine As Long
Dim wks As Worksheet
Dim Zeile As Long
Dim DatumLast As Date
Set wks = ActiveWorkbook.Worksheets("Krankmeldungen") 'Name ggf. Anpassen
'Tabelle hat 5 Spalten
'Name | Krankmeldung am | von-bis | von | bis
With wks
Zeile = .Cells(.Rows.Count, 1).End(xlUp).Row
'Datum Zeit der letzten erfassten Krankmeldung
DatumLast = Application.WorksheetFunction.Max(.Range("B:B"))
End With
Set objOL_App = VBA.CreateObject("Outlook.Application")
For Each objOL_Mail In objOL_App.GetNamespace("MAPI").GetDefaultFolder(6).Items ' 6 =  _
olFolderInbox
'Betreff überprüfen/auswerten
sSubject = objOL_Mail.Subject
If InStr(sSubject, "Krankmeldung") > 0 Then
'via Datum/Zeit prüfen, ob die Krankmeldung schon erfasst wurde
If objOL_Mail.SentOn > DatumLast Then
Zeile = Zeile + 1
sName = Trim(Mid(sSubject, 13))
wks.Cells(Zeile, 1) = sName    'In spalte A
wks.Cells(Zeile, 2).Value = objOL_Mail.SentOn 'Senden - Datum Uhrzeit in Spalte B
'Body-Text auswerten
sBody = objOL_Mail.Body
'Body-Text in Array mit zeileninhalten aufteilen
arrBody = VBA.Split(sBody, Chr(10)) 'evtl auch Chr(13) als Trennzeichen
'Zeilen des Bodytextes auswerten
For iLine = LBound(arrBody) To UBound(arrBody)
arrBody(iLine) = Trim(arrBody(iLine))
If IsDate(Right(arrBody(iLine), 10)) Then
If InStr(arrBody(iLine), "heute krank") > 0 Then
sDatum = Right(arrBody(iLine), 10)
wks.Cells(Zeile, 4).Value = CDate(sDatum) 'in Spalte D
ElseIf InStr(arrBody(iLine), "von") > 0 Then
sDatum = Right(arrBody(iLine), 10)
wks.Cells(Zeile, 4).Value = CDate(sDatum) 'in Spalte D
ElseIf InStr(arrBody(iLine), "bis") > 0 Then
sDatum = Right(arrBody(iLine), 10)
wks.Cells(Zeile, 5).Value = CDate(sDatum) 'in Spalte E
End If
End If
'von - bis-Spalte ausfüllen
'Format des Datums auf ISO-Format umgestellt, damit Spalte sortiert werden kann
If IsDate(wks.Cells(Zeile, 4).Value) Then
wks.Cells(Zeile, 3).Value = "'" & Format(wks.Cells(Zeile, 4), "YYYY-MM-DD")  _
'in Spalte C
End If
If IsDate(wks.Cells(Zeile, 5).Value) Then
wks.Cells(Zeile, 3).Value = "'" & wks.Cells(Zeile, 3).Text _
& " - " & Format(wks.Cells(Zeile, 5), "YYYY-MM-DD") 'in Spalte C
End If
Next
End If
End If
Next
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige