![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Master
![]() Registriert seit: 01.08.2001
Beiträge: 527
|
![]() Hy!
Folgendes Problem: Hab in meinem Outlook zusätzlich zu unserem Exchange-Server einen Archivordner (pst-Datei) angelegt, um die Postfachgröße des Servers nicht zu belasten und um gewisse Mails die sich im Archivordner befinden auch ohne Netz verwenden/lesen zu können! Will jetzt aber noch meine Kontakte und meinen Kalender vom Server auf den Archivordner kopieren. Damit diese aber auch immer aktuell sind, soll das kopieren beim schließen von Outlook passieren! Hab den Code fürs kopieren bereits erstellt (derzeit wird nur stur kopiert, die alten Daten vom Archivordner werden noch nicht gelöscht) und funktioniert soweit auch! Jetzt wollte ich noch den Code automatisch ausführen lassen (eben beim schließen)! Hab dafür folgendes Beispiel gefunden: MSDN-Microsoft Beispiel Danach bin ich vorgegangen. Hat jedoch bei mir keinen Erfolg gebracht! Denn er mach beim schließen genau gar nichts! ;( Hier ist mein tatsächlicher Code: Die msgbox Befehle dienen nur um zusätzlich die Ausführungen zu kontrollieren! Beim starten führt er auch die initialize_handler routine aus, aber eben beim Beenden passiert nichts! Code vom Klassenmodul Klasse1: Dim WithEvents myOlApp As Outlook.Application Sub Initialize_handler() MsgBox ("init") Set myOlApp = CreateObject("Outlook.application") End Sub Private Sub myOlApp_Quit() MsgBox ("ger") Set myNameSpace = myOlApp.GetNamespace("MAPI") Set myfolder = myNameSpace.Folders("Archivordner") Set myfolder2 = myNameSpace.Folders("Jankech Gerrit") 'Kontakte kopieren Set myfolder4 = myfolder2.Folders("kontakte") Set myNewFolder = myfolder4.CopyTo(myfolder) 'Kalender kopieren Set myfolder5 = myfolder2.Folders("Kalender") Set myNewFolder = myfolder5.CopyTo(myfolder) MsgBox "Goodbye, " & Application.GetNamespace("MAPI").CurrentUser End Sub Code von DieseOutlookSitzung Dim c_App As New Klasse1 Sub Application_Startup() Call c_App.Initialize_handler End Sub Was hab ich falsch gemacht!? Hoffe ihr könnt mir weiterhelfen! mfg |
![]() |
![]() |
![]() |
#2 |
Master
![]() Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550
|
![]() Hi!
Auf den 1. Blick würde ich vermuten, daß "Private Sub myOlApp_Quit()" nicht aufgerufen wird. "Application_Quit()" ist eine Ereignisprozedur für "DieseOutlookSitzung". Hier muß wahrscheinlich der Aufruf erfolgen. mfg WB |
![]() |
![]() |
![]() |
#3 |
Master
![]() Registriert seit: 01.08.2001
Beiträge: 527
|
![]() hy!
das hab ich auch am anfang versucht nur kommt dann bei dieser zeile Set myfolder = myNameSpace.Folders("Archivordner") eine fehlermeldung! --> anscheinend hat er da bereits keinen zugriff auf die pst datei! ![]() also ich weiß leider nicht mehr weiter! mfg |
![]() |
![]() |
![]() |
#4 | |
Jr. Member
![]() Registriert seit: 10.06.2000
Beiträge: 84
|
![]() Zitat:
Gibt die Folders-Auflistung zurück, die alle Ordner darstellt, die in dem angegebenen Ordner oder Namespace enthalten sind. Bei dem NameSpace-Objekt handelt es sich um die Basis aller Ordner des jeweiligen Namespace. Auszug aus der VBA-Hilfe. Ohne es auszuprobiert haben denke ich es müsste so funktionieren: Set myfolder = myNameSpace.Folders.Item(X) X als Index Alternavic kannst du auch mit Folders.Next durch alle Folder loopen und den gewünschten Ordner suchen. |
|
![]() |
![]() |
![]() |
#5 |
Master
![]() Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550
|
![]() Hi!
Die Fehlermeldung ist leider nicht sehr aussagekräftig. Das ist bei VB oft der Fall. Ich glaube nicht, daß der Fehler an einem nicht verfügbaren Ordner liegt. "Application_Quit()" wir am Anfang des Shutdowns ausgelöst. Da sollte der Ordner noch da sein. Wenn ich das 1. Posting richtig verstanden habe, funktioniert der Code. Nur wenn er durch das Ereignis ausgelöst wird, gibts einen Fehler. Da wäre der Versuch mit einem anderen Ereignis eine Möglichkeit. (z. B. nach einer Veränderung) Zum Testen laß dir von "Application_Quit()" alle Ordner auflisten. Vielleicht bringt das einen Hinweis auf das Problem. mfg WB |
![]() |
![]() |
![]() |
#6 |
Master
![]() Registriert seit: 01.08.2001
Beiträge: 527
|
![]() hy!
mit Set myfolder = myNameSpace.Folders.Item(X) hat es funktioniert! danke für die hilfe! mfg |
![]() |
![]() |
![]() |
#7 |
Master
![]() Registriert seit: 01.08.2001
Beiträge: 527
|
![]() hy!
hab mich zu früh gefreut! ![]() hab die gleich fehlermeldung beim schließen! aber wenn outlook offen ist geht es! mfg |
![]() |
![]() |
![]() |
#8 |
Master
![]() Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550
|
![]() Hi!
"Application_Quit()" wird ausgelöst, wenn der Shutdown von Outlook beginnt. Eigentlich sollten da noch alle Ordner verfügbar sein. Zum Testen laß dir von "Application_Quit()" alle Ordner auflisten. Wenn das nicht funktioniert, versuch es mit einem anderen Ereignis. Als letzte Möglichkeit: Eine Schaltfläche mit dem Code belegen, und händisch sichern. mfg WB |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|