Access-Paradies im Internet

 

  

::: Funktionen

 


Die Top Seite für Excel-VBA-Makros uvm.
Anwenderforum für Microsoft Office, Windows, VB
FAQ, kostenlose Tipps und Downloads zu Microsoft Office
Das große Visual-Basic Archiv
Access-Garhammer
Rainer's Archiv

::: Newsletter

 

Unser Newsletter informiert Sie topaktuell rund um alle Themen zu Microsoft Access, VBA usw.

 
  




::: ebay

 
1.000 Tage eBay Partnerprogramm - Volume II
 

31

 
  News -> Kolumne - Januar 2005   

von Günther Kramer

Mausrad im Formular abschalten

Der VBA-Code schaltet innerhalb eines Formulars das Mausrad ab



Mails senden, abrufen und decodieren - ganz easy ;-)

Das SMTP Control sendet, das POP3 Control empfängt und der Mail-Parser (Klassenobjekt) decodiert empfangene Mails im Handumdrehen - natürlich unter Berücksichtigung von Multi-Part MIME Nachrichten, Anlagen u.v.m.



Das Access-VBA Codebook

Neue Ausgabe!




Die VBA-Codesammlung, die bei keinem Entwickler
fehlen darf!

 
   
 
 
 

E-Mails in Access sichern

In der heutigen Kolumne beschreibt der Autor Bernd Held wie Sie e-Mails aus Outlook in einer Access-Tabelle sichern können. Er ist anerkannter VBA-Spezialist und trägt für sein Engagement in der den Newsgroupen von
Microsoft seit 8 Jahren den Titel "Most Valuable Professional" (MVP). Nähere Informationen zu seinem erfolgreichen Buch mit Tipps und Lösungen rund um die VBA-Programmierung in Access, finden Sie hier (Das Access-VBA Codebook).

Diese Kolumne zeigt, wie Sie E-Mails aus Outlook in Access-Tabellen sichern können.
Standardmäßig werden alle E-Mails sowie Daten aus Outlook in der Datei Outlook.pst gespeichert. Diese Datei wächst dabei täglich an, was sich irgendwann auch zwangsläufig in der Performance Ihres Systems auswirkt. Jetzt wird gezeigt, wie E-Mails aus Outlook in eine Access-Datenbank transferiert werden können, um damit eine „zweite“ Sicherung der E-Mails auf anderem Medium herzustellen.
Um die E-Mail-Daten aus Outlook in eine Access-Tabelle zu übertragen, muss zuerst eine Tabelle nach folgendem Aufbau anlegt und unter dem Namen EingangMails gespeichert werden:

Feldname Felddatentyp
ID AutoWert
Titel Text
Empfänger Memo
Mailer Text
Inhalt Memo
Datum Datum/Uhrzeit
Größe Zahl

Da der Felddatentyp Text auf 255 Zeichen begrenzt ist, wird beim Feld Empfänger sowie beim eigentlichen E-Mail-Inhalt der Felddatentyp Memo verwendet, der immerhin 65536 Zeichen als maximale Kapazität zur Verfügung bereitstellt. Gerade, wenn eine E-Mail an mehrere Empfänger geht, dann ist oft die Felddefinition Text zu klein, geschweige denn, wenn der Inhalt eines E-Mails gespeichert werden soll. Beim Feld Inhalt dürfte die Kapazitätsgrenze des Feldatentyps Memo daher in den allermeisten Fällen ausreichen.

Als nächste Aufgabe muss die Vorbereitung der Entwicklungsumgebung von Access auf den Transfer vorbereitet werden. Dieser Transfer wird über den Einsatz von VBA-Makros realisiert, dabei müssen einige Objektbibliotheken eingebunden werden. Diese Objektbibliotheken (Microsoft Outlook und DAO) stellen die dazu benötigten VBA-Befehle zur Verfügung. Dazu wechseln Sie in die Entwicklungsumgebung von Access, indem Sie die Tastenkombination<Alt> + <F11> drücken. Wählen Sie aus dem Menü Extras den Befehl Verweise und aktivieren Sie die Bibliothek Microsoft Outlook 9.0 Object library (Office 2000), Microsoft Outlook 10.0 Object library (Office XP), bzw. Microsoft Outlook 11.0 Object library (Office 2003). Aktivieren Sie zusätzlich die Bibliothek Microsoft DAO 3.6 Object library.
Fügen Sie nun in der Entwicklungsumgebung von Access ein neues Modul ein (Menü Einfügen, Befehl Modul) und erfassen das Makro aus

Code:
Sub EingangsMailsAusOutlookÜbernehmen()
Dim OutlN As New Outlook.Application
Dim Eingangsbox As Object
Dim objKon As Object
Dim DBS As Recordset
Dim Conn As Database
Dim IntMailZ As Integer
 
Set Conn = CurrentDb
Set DBS = Conn.OpenRecordset("EingangMails", dbOpenDynaset)
IntMailZ = 0
Set Eingangsbox = OutlN.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
For IntMailZ = 1 To Eingangsbox.Items.Count
 Set objKon = Eingangsbox.Items(IntMailZ)
 With objKon
     DBS.AddNew
     DBS!Titel = .Subject
     DBS!Empfänger = .To
     DBS!Mailer = .SenderName
     DBS!Datum = .CreationTime
     'oder:
     'DBS!Datum = Format(.ReceivedTime, "DD.MM.YYYY hh:mm")
     DBS!Größe = .Size
     DBS!Inhalt = .Body
 End With
 DBS.Update
Next IntMailZ
MsgBox "Datentransfer erfolgreich beendet! " & vbLf & _
 "Es wurden " & IntMailZ & " Sätze angelegt!", vbInformation
DBS.Close
Set objKon = Nothing
Set OutlN = Nothing
Exit Sub
 
fehlerm:
MsgBox "Es ist ein Fehler aufgetreten!"
End Sub

Zu Beginn des Makros werden die benötigten Variablen deklariert. Danach wird über die Methode CurrentDb dafür gesorgt, dass auf die aktuelle Datenbank verwiesen wird. Über die Methode OpenRecordSet wird die Tabelle EingangMails geöffnet. Die Zählvariable IntMailZ wird vor dem Beginn der Schleife auf den Wert 0 gesetzt. Die Datenquelle MAPI wird danach über die Methode GetNameSpace festgelegt. Der Standardordner kann über die Methode GetDefaultFolder adressiert werden. Dabei wird ein Verweis auf den Posteingangsordner gesetzt, der über die Konstante olFolderInbox identifiziert wird. Die anschließende Schleife arbeitet alle E-Mails im Posteingangsordner ab. Dabei wird über die Eigenschaft Count, welches auf das Auflistungsobjekt Items angewendet wird, die Gesamtzahl der dort enthaltenen E-Mails abgefragt. Innerhalb der Schleife wird ein Objekt über die Anweisung Set erstellt. Die Methode AddNew legt dieses noch leere Objekt in der Access-Tabelle an ,welches danach gefüllt wird. Über die Eigenschaft Subject wird dem Datenfeld Titel der Titel des E-Mails zugewiesen. Mithilfe der Eigenschaft To kann man den beziehungsweise die Empfänger des jeweiligen E-Mails auslesen. Sind mehrere Empfänger im E-Mail angeben, so werden diese durch das Zeichen Semikolon voneinander getrennt ausgegeben. Die Eigenschaft SenderName gibt Auskunft über die Person, die das E-Mail versendet hat. Über die Eigenschaft CreationDate können Sie das Erstellungsdatum eines E-Mails feststellen. Die Größe einer E-Mail-Nachricht kann über die Eigenschaft Size abgefragt werden. Dabei wird die Einheit in Bytes ausgegeben. Der eigentliche Inhalt des E-Mails wird über die Eigenschaft Body ermittelt. Weisen Sie diesen Inhalt dem Datenbankfeld Inhalt zu, dass Sie vorher in der richtigen Größe (Datenbankfeld Memo) angelegt haben. Am Ende der Schleife darf nicht vergessen werden die Methode Update einzusetzen. Erst dann wird der neue Datensatz in der Tabelle gespeichert. Über die Methode Close wird die Datentabelle anschließend geschlossen.

Viele weitere Tipps & Tricks aus der Praxis für die Praxis finden Sie auf unserer AP-Access-Tools Vol.1

 
 

 

Auf der AP-Access-Tools Vol.1 finden Sie weitere 320 Tipps & Tricks sowie 250 Access-Beispiel/Anwendungen mit offenen Quellcode!

Die Access-Tools-CD mit über 400 MByte Inhalt - für Access- und VB-Entwickler

  • 256 Access-Beispiele mit offenem Code
  • 45 Add-Ins und ActiveX-Komponenten (Freeware)
  • 16 VB-Projekt inkl. Source
  • 321 Tipps & Tricks für Access und VB
  • Plus 11 Entwicklerversionen (9 davon mit Source!)
  • Plus 3 Vollversionen und
  • Plus riesiger Datenpool

    Holen Sie sich jetzt Ihre AP-Access-Tools-CD zum Superpreis von nur EUR 24,95!

  •  
     

     
     
     
     

    Access-Paradies © 1996-2011 Microsys Kramer


    Microsoft, Access, Word, Excel, Outlook, Outlook Express, Visual Basic und Windows sind eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

    Weiterempfehlung  |   Linken Sie uns  |   Impressum  |   Newsletter  |   Onlineshop