Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1708to1712
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

Betreff von neuen Mails automatisch in Excel

Betreff von neuen Mails automatisch in Excel
05.09.2019 10:02:54
neuen
Hallo,
Ich möchte den Betreff einer Mail auslesen und den Betreff dann in eine Exceltabelle schreiben. Das unten stehende Macro habe Ich in Outlook in einem Modul. Das MAcro soll automatisch laufen, wenn eine neue Mail rein kommt.
Ich habe eine regel erstellt, die dieses Script bei neuer Mail ausführen soll.
Nun die Probleme:
1. Es wird immer nur die Vorletzte Mail mit der Regel bearbeitet.
- Kommt also die erste Mail rein, apssiert nichts. Erst wenn noch eine Zweite rein kommt funktioniert das.
1b. Ich würde das Macro gerne automatisch über den vba code starten anstatt üpber die regel, da dies nur mit der registry veränderung funktioneirt.
2. Excel soll sich nach abspeichern schließen, weiß nicht wie das geht. "Application.Quit" gibt mir nen fehler raus.
Wenn nur eine Mail drin ist und ich die Regel Manuell starte, geht es.
Vielleicht hat ja einer ne Ahnung.
Danke!
[code]
Sub extractgenehmigung(Item As Outlook.MailItem)
Dim fMails As Folder, mail As MailItem, txtContent As String, arrContent As Variant, objExcel  _
As Object, wb As Object, sheet As Object, rngStart As Object, rngCurrent As Object, fErledigt As Object
'Pfad zur Excel-Datei
Const EXCELFILE = "PFADZUMEXCELFILE"
'Ordner in Outlook referenzieren
Set fMails = Application.Session.Stores("Email_des_Postfaches").GetDefaultFolder( _
olFolderInbox).Items
'Unterordner referenzieren in den die Mails verschoben werden wenn sie bearbeitet wurden
Set fErledigt = fMails.Folders("erledigt")
If fMails.Items.Count > 0 Then
'Excel Objekt erzeugen
Set objExcel = CreateObject("Excel.Application")
objExcel.DisplayAlerts = False
'Excelfile öffnen
Set wb = objExcel.Workbooks.Open(EXCELFILE)
'Daten kommen in Worksheet
Set sheet = wb.Worksheets("Genehmigung")
'Startzelle in Spalte A ermitteln
Set rngStart = sheet.Cells(sheet.Rows.Count, 1).End(-4162).Offset(1, 0)
Set rngCurrent = rngStart
While fMails.Items.Count > 0
'aktuelle Mail
Set mail = fMails.Items(1)
'betreff extrahieren
txtContent = mail.Subject
'Setze Werte im Sheet
With rngCurrent
.Value = txtContent
End With
'Excel Zeile eins nach unten verschieben
Set rngCurrent = rngCurrent.Offset(1, 0)
' Mail in den 'Erledigt' Ordner verschieben
mail.Move fErledigt
Wend
'Workbook speichern
wb.Save
'Excel anzeigen
objExcel.Visible = False
objExcel.DisplayAlerts = False
End If
Set objExcel = Nothing
Set wb = Nothing
Set sheet = Nothing
Set mail = Nothing
End Sub

[/code]

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Betreff von neuen Mails automatisch in Excel
06.09.2019 12:44:52
neuen
Hallo TayPay,
zu 1. kann ich nichts sagen
Ich hab das Makro mal so umgeschrieben, dass alle Mail-Objekte im Ordner in einer For-Next-Schleife abgearbeitet werden.
zu 1b. Es gibt in Outlook ein Ereignis-Makro das bei Eingang neuer Mails gestartet wird, allerdings nur wenn Outlook online ist. Das entsprechende Makro muss dann im VBA-Editor unter "ThisOutlookSession" angelegt werden.
zu 2. Excel beenden
a) im Makro die Excel-Datei nach dem Speichern schlien
b) die Anweisung muss hier sein: objExcel.Quit
____Denn bei Application.Quit bezieht sich Application hier auf Outlook.
Nachfolgend die entsprechenden Makros - allerdings hab ich dein modifiziertes Makro nicht getestet.
Dein Makro hat als Parameter die Variable "Item as MailItem". Diese wird im Code nicht verwendet, welchen Zweck hat sie?
LG
Franz

'Ereignismakro im VBA-Editor unter "ThisOutlookSession"
'Ereignismakro ist nur aktiv, wenn Outlook online ist !!!!!
Private Sub Application_NewMail()
'    MsgBox "You got new Mail", vbOKOnly, "Test Application_NewMail-Ereignis 'Testzeile"
Call extractgenehmigung
End Sub
'Code in einem allgemeinen Modul im Outlook-VBA-Editor
Sub extractgenehmigung()
'Sub extractgenehmigung(Item As Outlook.MailItem)
Dim fMails As Folder, mail As MailItem, txtContent As String, arrContent As Variant, _
objExcel As Object, wb As Object, sheet As Object, rngStart As Object, rngCurrent As Object, _
fErledigt As Object
'Pfad zur Excel-Datei
Const EXCELFILE = "PFADZUMEXCELFILE"
'Ordner in Outlook referenzieren
Set fMails = Application.Session.Stores("Email_des_Postfaches").GetDefaultFolder( _
olFolderInbox).Items
'Unterordner referenzieren in den die Mails verschoben werden wenn sie bearbeitet wurden
Set fErledigt = fMails.Folders("erledigt")
If fMails.Items.Count > 0 Then
'Excel Objekt erzeugen
Set objExcel = CreateObject("Excel.Application")
objExcel.DisplayAlerts = False
'Excelfile öffnen
Set wb = objExcel.Workbooks.Open(EXCELFILE)
'Daten kommen in Worksheet
Set sheet = wb.Worksheets("Genehmigung")
'Startzelle in Spalte A ermitteln
Set rngStart = sheet.Cells(sheet.Rows.Count, 1).End(-4162).Offset(1, 0)
Set rngCurrent = rngStart
For Each mail In fMails.Items
'       While fMails.Items.Count > 0
'aktuelle Mail
'           Set mail = fMails.Items(1)
'betreff extrahieren
txtContent = mail.Subject
'Setze Werte im Sheet
With rngCurrent
.Value = txtContent
End With
'Excel Zeile eins nach unten verschieben
Set rngCurrent = rngCurrent.Offset(1, 0)
' Mail in den 'Erledigt' Ordner verschieben
mail.Move fErledigt
'        Wend
Next
'Workbook speichern
wb.Save
'Workbook schliessen
wb.Close
'Excel anzeigen
objExcel.Visible = True
objExcel.DisplayAlerts = True
'Excel beenden
objExcel.Quit
End If
Set objExcel = Nothing
Set wb = Nothing
Set sheet = Nothing
Set mail = Nothing
End Sub

Anzeige

31 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige