WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   VBA - Outlook (http://www.wcm.at/forum/showthread.php?t=155618)

NasenBär 11.01.2005 08:17

VBA - Outlook
 
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

wbendl 11.01.2005 09:12

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

NasenBär 11.01.2005 15:17

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! :( (siehe dateianhang)

also ich weiß leider nicht mehr weiter!

mfg

cg32 11.01.2005 20:33

Zitat:

Original geschrieben von NasenBär
Set myfolder = myNameSpace.Folders("Archivordner")
Folders

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.

wbendl 11.01.2005 21:19

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

NasenBär 20.01.2005 07:35

hy!

mit
Set myfolder = myNameSpace.Folders.Item(X)
hat es funktioniert!

danke für die hilfe!

mfg

NasenBär 20.01.2005 09:51

hy!

hab mich zu früh gefreut! :(

hab die gleich fehlermeldung beim schließen!
aber wenn outlook offen ist geht es!

mfg

wbendl 20.01.2005 10:30

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


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag