Benutzer mit den meisten Antworten
outlook daten auslesen

Frage
-
hallo zusammen,
ich möchte meine pst-datei ( outlook 2007 ) über ein vb-programm nach bestimmten emails durchsuchen,
die auslesen und dann als datei abspeichern.
hat einer dazu eventuell einen ansatz. ? habe schon den ganzen vormittag dazu gegoogelt, leider vergebens,
danke
klaus
Antworten
-
Ich verwende C# (.NET 2.x) für etwas ähnliches, unter Verwendung des Programmier-API von Outlook.
In C# muss man beginnen, ein neue Projekt zu machen, dann
Projekt . Verweis hinzufügen . [COM] . "Microsoft Outlook 12.0 Object Library"
(Falle: die Library enthält nicht das Wort "Office") zufügen.
Es entsteht dann unter "Verweise" der Namespace "Microsoft.Office.Interop.Outlook", der die Objekte für den Outlookzugriff zur Verfügung stellt.
Mit denen lässt sich dann etwa über OutlookApplication, MAPIFolder, MailItem etc. das Outlook fernsteuern.
Die Hilfe dafür gibt es beim Outook:
C:\Program Files\Microsoft Office\Office12\1031\VBAOL11.CHM
Sie hat aber bei mir 0 Bytes. Installationsfehler?
Hier eine C#-Klasse, die den Kontakt zum (geöffneten) Outlook herstellt - in VB ist das nicht grundsätzlich viel anders:
private static void Verify( Object o, String VarName )
{
if ( o == null )
throw ( new System.Exception( String.Format( "Verify failed: '{0}' = null", VarName ) ) );
}protected internal class TOutlookMailAccessObj : IDisposable
{
public Outlook.Application myOlApp;
public Outlook.NameSpace myNameSpace;
public MAPIFolder myFolder, mySentMail;public string infoOfLoading= "";
public TOutlookMailAccessObj()
{try {
myOlApp = new Outlook.Application();
Verify( myOlApp, "myOlApp" );
try {
myNameSpace = myOlApp.GetNamespace("MAPI");
Verify( myNameSpace, "myNameSpace" );
try {
// myFolder = myNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
myFolder = myOlApp.Explorers[1].CurrentFolder;
Verify( myFolder, "myFolder" );
mySentMail = myNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail);} catch ( System.Exception E ) { MessageBox.Show( "Err @ ... (vielleicht Zugriff nicht gewährt?) \r\n" + E.Message + "\r\n" + E.StackTrace ); }
} catch ( System.Exception E ) { MessageBox.Show( "Err @ Namespace " + E.Message + "\r\n" + E.StackTrace ); }
} catch ( System.Exception E ) { MessageBox.Show( "Err @ Outlook Application " + E.Message + "\r\n" + E.StackTrace ); }
}public void Dispose()
{
}
}Zugriff auf eMails dann über (beachte, dass der Folder auch andere Item-Typen als nur MailItems enthalten kann! Deswegen die explizite Konversion im try{}-Block):
foreach ( Object Item_NoType in C.myFolder.Items )
{
MailItem Item= null;
try {
Item= (MailItem) Item_NoType; // Contact groups cannot be converted ...
}
catch {}if ( Item != null )
{......
Vielleicht hilft das auch VB-Programmieren ein bisschen weiter ...
ch
- Als Antwort markiert Thorsten Dörfler Sonntag, 18. Juli 2010 14:07
Alle Antworten
-
Ich verwende C# (.NET 2.x) für etwas ähnliches, unter Verwendung des Programmier-API von Outlook.
In C# muss man beginnen, ein neue Projekt zu machen, dann
Projekt . Verweis hinzufügen . [COM] . "Microsoft Outlook 12.0 Object Library"
(Falle: die Library enthält nicht das Wort "Office") zufügen.
Es entsteht dann unter "Verweise" der Namespace "Microsoft.Office.Interop.Outlook", der die Objekte für den Outlookzugriff zur Verfügung stellt.
Mit denen lässt sich dann etwa über OutlookApplication, MAPIFolder, MailItem etc. das Outlook fernsteuern.
Die Hilfe dafür gibt es beim Outook:
C:\Program Files\Microsoft Office\Office12\1031\VBAOL11.CHM
Sie hat aber bei mir 0 Bytes. Installationsfehler?
Hier eine C#-Klasse, die den Kontakt zum (geöffneten) Outlook herstellt - in VB ist das nicht grundsätzlich viel anders:
private static void Verify( Object o, String VarName )
{
if ( o == null )
throw ( new System.Exception( String.Format( "Verify failed: '{0}' = null", VarName ) ) );
}protected internal class TOutlookMailAccessObj : IDisposable
{
public Outlook.Application myOlApp;
public Outlook.NameSpace myNameSpace;
public MAPIFolder myFolder, mySentMail;public string infoOfLoading= "";
public TOutlookMailAccessObj()
{try {
myOlApp = new Outlook.Application();
Verify( myOlApp, "myOlApp" );
try {
myNameSpace = myOlApp.GetNamespace("MAPI");
Verify( myNameSpace, "myNameSpace" );
try {
// myFolder = myNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
myFolder = myOlApp.Explorers[1].CurrentFolder;
Verify( myFolder, "myFolder" );
mySentMail = myNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail);} catch ( System.Exception E ) { MessageBox.Show( "Err @ ... (vielleicht Zugriff nicht gewährt?) \r\n" + E.Message + "\r\n" + E.StackTrace ); }
} catch ( System.Exception E ) { MessageBox.Show( "Err @ Namespace " + E.Message + "\r\n" + E.StackTrace ); }
} catch ( System.Exception E ) { MessageBox.Show( "Err @ Outlook Application " + E.Message + "\r\n" + E.StackTrace ); }
}public void Dispose()
{
}
}Zugriff auf eMails dann über (beachte, dass der Folder auch andere Item-Typen als nur MailItems enthalten kann! Deswegen die explizite Konversion im try{}-Block):
foreach ( Object Item_NoType in C.myFolder.Items )
{
MailItem Item= null;
try {
Item= (MailItem) Item_NoType; // Contact groups cannot be converted ...
}
catch {}if ( Item != null )
{......
Vielleicht hilft das auch VB-Programmieren ein bisschen weiter ...
ch
- Als Antwort markiert Thorsten Dörfler Sonntag, 18. Juli 2010 14:07
-
Hallo, da ihr gerade so im Thema seid, gibt es eine Übersicht von Outlook, wie die einzelnen Spalten von der Tabelle Kontakte, Email usw gibt?
Kann die Daten in vb.net auslesen, leider fehlen mir Spalten! Z.B. Auslesen der Tabelle Kontakte Lastname, Firstname und noch ein paar andere, aber ne komplette Übersicht habe ich noch nicht gesehen.
Bitte um kurze Info. -
Das steht in der schon erwähnten
C:\Program Files\Microsoft Office\Office12\1031\VBAOL11.CHM
(oder einer anderen VBAOLnn.CHM),
die mit Office ausgeliefert wird (nicht mit dem Compiler),
unter dem Hilfe-Inhalts-Thema
Objects - ( MailItem | ContactItem | ... ) - Eigenschaften (dieses Wort ist ein bisschen unauffällig, oben),
Eigenschaften sind z.B. Subject | HTMLBody | ....
ch