Hallo... ich mal wieder :P
über meine Access Datenbank erstelle und versende ich via Mail Auftragsformulare, welche der Kunde unterschrieben an mich zurück sendet.. Entweder per Mail oder als Fax... Aufträge welche per Fax zurückgesendet werden, erhalte ich ebenfalls per Mail. Auf den Aufträgen befindet sich ein QR Code mit der Auftrags ID, welcher bereits vom Faxanbieter ausgelesen wird. Die Mail, welche ich dann erhalte ist wie folgt aufgebaut:
****************************************************************************
Hallo,
Anbei erhalten Sie Ihr Fax im PDF-Format:
+-----------------------------------------------------------+
| BITTE ANTWORTEN SIE NICHT AUF DIESE MAIL! |
+-----------------------------------------------------------+
### Account-Daten:
- Account-ID:
- Rufnummer Fax:
### Status:
- Status: SUCCESS
- Status Text: OK
- Fehlercode:
### Fax-Daten:
- Rufnummer Anrufer: **************
- Sender-Kennung: **************
- Übertragungsrate: 9600
- Auflösung: 8031x3850
- Seiten: 1
### QR-Codes:
- Gefundene QRCodes: 1
- QRCode 1: 1444744787
Mit freundlichen Grüßen,
****************************************************************************
Wie Ihr sehen könnt, enthält die Mail den ausgewerteten QR Code, welcher meine AuftragsID enthält. Siehe: - QRCode 1: 1444744787
Nun meine Fragen:
Wie kann ich Access anweisen, nach neuen Maileingängen zu schauen? Erreicht mich so eine neue Fax-Email, so möchte ich gern, dass das im Dateianhang befindliche Fax, welches bereits eine PDF Datei ist, unter dem Namen "Auftragsnummer.pdf" in einen bestimmten Ordner auf der Festplatte abgelegt wird. Gleichzeitig soll in meiner Access Datenbank in der tbl_Aufträge eine "1" in der Spalte "Auftrag_vorhanden" erfasst werden.
Dazu muss die ID aus der Mail irgendwie herausgefiltert werden. Wie geht das? Ich habe die Möglichkeit die Kennzeichnung der ID im QR Code auch zu verändern und z.B. mit zwei Rauten zu umschließen. Das ist kein Problem. Access erstellt mir diesen QR Code übrigens individuell pro Auftrag.
Dann sollte die betreffende Mail als erledigt gekennzeichnet werden, damit sie beim nächsten Suchlauf nicht wieder mit bearbeitet wird.
Die Mails gehen bei mir via Outlook ein.
Was meint Ihr, wie wäre es möglich, oben genannte Aufgaben zu erledigen?
Ich freue mich auf Vorschläge.
Hallo,
idealerweise läßt man solche Aufgaben Outlook direkt durchführen, da in Outlook bereits das Ereignis "neues Mail" existiert.
Dann den Text analysieren, ob QRCode drinnensteht, den Anhang verschieben, und den Eintrag in der Access Datenbank durchführen.
Wenn es nicht oft vorkommt, würde ich allerdings einen Ribbon Eintrag (oder einen Commandbutton) erstellen, und die Aktion per Knopfdruck starten.
Wenn Du keine Exchange Konto hast, dann könntest du den Posteingang auch mit Access als Tabelle verknüpfen - da hab ich aber keine Erfahrung da ich nur Exchange verwende.
LG Markus
Ok besten Dank. Leider kenne ich mich im VBA für Outlook noch gar nicht aus. Wie fängt man da an? Mit einem Modul und dann via Posteingangs - Regel?
Wie lässt sich der Text auslesen bzgl. des Codes?
Wie kann ich von Outlook heraus via VBA Einträge in der Access Datenbank vornehmen?
Nur zum zum Testen kannst Du folgenden Code in das Outlook Modul "ThisOutlookSession" einfügen
Bei den Verweisen musst natürlich "Microsoft Activex Data Objects 2.8 " oder eben deine Version setzen. Du kannst natürlich auch DAO für den Datenbankzugriff verwenden, aber ADO ist halt etwas Ressourcen freundlicher.
Test kannst du dann später entweder durch das Ereignis ersetzen, oder direkt per Commandbutton ansteuern.
Viel Spass!
Code einfach abändern
Sub test()
'Es wird das aktuell offene Email verwendet
QrCodeVerarbeitung Application.ActiveInspector.CurrentItem
End Sub
Sub QrCodeVerarbeitung(oMail As MailItem)
Dim pos&, sCode$
Dim oAnhang As Attachment
Dim oCon As ADODB.Connection
'QR Code Position suchen
pos = InStr(oMail.Body, "QRCode 1:")
'QR Code einlesen
'scode =
'Anhang speichern
Set oAnhang = oMail.Attachments(1)
oAnhang.SaveAsFile "DeinPfad" & oAnhang.FileName
'Eintrag in Datenbank
Set oCon = getConnectionAdo("AccessDatei", "Passwort", adUseServer)
oCon.Execute "Dein SQL Satement", , 129
End Sub
Function getConnectionAdo(sDatei$, sPwd$, CurserTyp As CursorLocationEnum) As ADODB.Connection
Dim sCon$, oCon As ADODB.Connection
If sPwd = "" Then
sCon = "Data Source=" & sDatei & ";Persist Security Info=False;"
Else
sCon = "Data Source=" & sDatei & ";Jet OLEDB:Database Password=" & sPwd & ";"
End If
Set oCon = New ADODB.Connection
oCon.Provider = "Microsoft.ACE.OLEDB.12.0"
oCon.CursorLocation = CurserTyp
oCon.Open sCon
Set getConnectionAdo = oCon
End Function
Gruß Markus
Cool vielen Dank. Ich bastel damit mal rum und melde mich wieder.