Outlook E-Mails auslesen und die in einem SQL Datenbank speichern
Hallo Zusammen,
ich versuche die o.g. Problem zu lösen, ich komme aber nicht klar.
Es soll die E-Mails überprüfen, Betreff, Absender und Datum auf einen Tabelle speichern.
Danach alle E-Mails überprüfen und zusammenzählen, bzw. anzeigen die PDF Dateien von den ungelesenen E-Mails.
Was mach ich hier falsch? Kann mir jemand helfen?
ich versuche die o.g. Problem zu lösen, ich komme aber nicht klar.
Es soll die E-Mails überprüfen, Betreff, Absender und Datum auf einen Tabelle speichern.
Danach alle E-Mails überprüfen und zusammenzählen, bzw. anzeigen die PDF Dateien von den ungelesenen E-Mails.
Option Compare Database
Option Explicit
Sub TestAccessDB_Outlook()
Dim oA As New Outlook.Application
Dim o_NS As Outlook.NameSpace
Dim oFs As Outlook.Folders
Dim oFolder As Outlook.MAPIFolder
Dim Inbox As Outlook.MAPIFolder
Dim Drafts As Outlook.MAPIFolder
Dim Archive As Outlook.MAPIFolder
Dim MailFolder As Outlook.MAPIFolder
Dim AdobeFolder As Outlook.MAPIFolder
Dim MailItem As Outlook.MailItem
Dim oItem As Outlook.MailItem
Dim i As Long
Dim intAttachement As Integer
Dim intCounter As Integer
Dim intItem As Integer
Dim strMailbox As String
Dim strInbox As String
Dim strDrafts As String
Dim strArchive As String
Dim strDatabase As String
Dim strAttachementType As String
Dim Anzahl As Integer
Dim EmailCount As Integer
Dim db As Database
Dim rs As Recordset
Dim strSQL As String
' Datenbankverbindung herstellen
strDatabase = "C:\Users\username\Documents\Uebung.accdb"
Set db = CurrentDb
' Datensatz aus Tabelle öffnen
strSQL = "Select * FROM tbl_Email_Log;"
Set rs = db.OpenRecordset(strSQL)
rs.AddNew
rs!Betreff = "Test2"
rs!Datum_gesendet = Now()
'rs!Betreff = oItem.Subject
rs.Update
rs.Close
' Outlookverbindung herstellen
Set o_NS = oA.GetNamespace("MAPI")
o_NS.Logon , , , False
Set oFs = o_NS.Folders
'Hier müssen noch die Werte aus der zu öffnenden Outlook Mailbox rein
strMailbox = "email@email.com"
strInbox = "Posteingang"
strArchive = ""
Set oFolder = oFs.Item(strMailbox)
Set Inbox = oFolder.Folders(strInbox)
Set AdobeFolder = Inbox.Folders("Adobe")
Set MailFolder = o_NS.GetDefaultFolder(olFolderOutbox)
' Alle Mails im Posteingang zählen
For intItem = Inbox.Items.Count To 1 Step -1
EmailCount = Inbox.Items.Count
' Nur ungelesene Mails bearbeiten
If Inbox.Items(intItem).UnRead = True Then
' Feststellen, um welche Objekt-Klasse es sich handelt und nur Mails bearbeiten
If Inbox.Items(intItem).Class = olMail Then
Set oItem = Inbox.Items(intItem)
rs!Betreff = oItem.Subject
rs!Datum_gesendet = oItem.SentOn
If Not oItem.Attachments.Count = 0 Then
For intAttachement = 1 To oItem.Attachments.Count
' Nur Mails mit PDF-Anlagen bearbeiten
strAttachementType = Right(oItem.Attachments.Item(intAttachement).FileName, 3)
If UCase(strAttachementType) = "PDF" Then
Anzahl = Anzahl + 1
End If
Next
End If
End If
End If
Next
' MsgBox "Email gefunden mit PDF " & Anzahl & " von Insgesamt " & EmailCount & " E-Mail"
End Sub
Was mach ich hier falsch? Kann mir jemand helfen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 370346
Url: https://administrator.de/forum/outlook-e-mails-auslesen-und-die-in-einem-sql-datenbank-speichern-370346.html
Ausgedruckt am: 21.04.2025 um 11:04 Uhr
8 Kommentare
Neuester Kommentar
Hi,
sollen wir das jetzt alles auseinander nehmen?
Wie weit läuft es denn noch? Wo hängt es, kommt eine Fehler, klappt es nicht?
Hast Du den Code selbst geschrieben oder Dir aus Fragmenten zusammenkopiert?
E.
sollen wir das jetzt alles auseinander nehmen?
Wie weit läuft es denn noch? Wo hängt es, kommt eine Fehler, klappt es nicht?
Hast Du den Code selbst geschrieben oder Dir aus Fragmenten zusammenkopiert?
'Datenbankverbindung herstellen
strDatabase = "C:\Users\username\Documents\Uebung.accdb"
Set db = CurrentDb
Das z.B. sieht sehr komisch aus.strDatabase = "C:\Users\username\Documents\Uebung.accdb"
Set db = CurrentDb
E.
Warum ist das "Datenbankverbindung herstellen " komisch?
Ja ok. Wir sind im Access VBA und nicht im Outlook VBA, richtig? Ich bin von Outlook ausgegangen ...Fehler 3420
Object is invalid or no longer set. (Error 3420)Entweder rs oder oItem sind hier wohl Nothing.
bzw.
Ich sehe kein "rs.AddNew" bevor Du eine weiteres Item einliest. Du musst doch erstmal einen neuen Datensatz anfangen.
Und danach das rs.Update und rs.Close?