Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Email automatisch auswerten, Anhänge ablegen, Daten in Access eintragen

Begonnen von datekk, Oktober 21, 2015, 13:55:25

⏪ vorheriges - nächstes ⏩

datekk

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.
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

markusxy

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


datekk

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?

Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

markusxy

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

datekk

Cool vielen Dank. Ich bastel damit mal rum und melde mich wieder.
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps