bigfudge
Goto Top

Outlook, VBA, Ordner aus bestimmten Store zuweisen

Hi Leute,

Das Thema wurde in einem anderen Thread schon angegrenzt, hatte mir dem eigentlichen Thema nichts mehr zutun, daher erstelle ich hier einen neuen Thread. Falls es wen interessiert hier der Link dazu: Outlook newMailex oder NewMail?

Ich will eigentlich nur den Folder aus einem Store, am betroffenen Computer sind in Outlook 2 Mailadressen aktiv (privat + hotline) zuweisen.

Teste das z.Z. bei mir, wobei ich nur einen Store bzw. e-Mail-Adresse konfiguriert habe, sollte natürlich aber trotzdem funktionieren.

bisher sieht das ganze so aus:

 Set Inbox = Application.Session.Stores("vorname.nachname@firma.com").GetRootFolder.Folders("BeispielOrdner")   

der Ordner den ich zuweisen will, liegt auf der selben Ebene wie die Inbox.

Getriggert wird das Makro bei jedem Maileingang. Ich erhalte dann den Fehler in o.g. Zeile: Run-time error '-2147221233, the Operation failed. An object could not be found.

EDIT: mit
Set Inbox = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Folders("FolderBeispiel")  
funktioniert es face-smile

EDIT2: Es ist ein Exchange Server im Einsatz, falls das einen Einfluss darauf hat

viele Grüße,
fudge

Content-ID: 250653

Url: https://administrator.de/contentid/250653

Ausgedruckt am: 22.11.2024 um 13:11 Uhr

colinardo
colinardo 01.10.2014 aktualisiert um 09:16:57 Uhr
Goto Top
Moin fudge,
du sagtest der Ordner liegt auf der selben Ebene wie der Posteingang, dann hast du dich im vorigen Post falsch ausgedrückt; du meintest wohl es ist ein Unterordner des Posteingangs !! In diesem Fall sieht das natürlich so aus:
Set Inbox = Application.Session.Stores("vorname.nachname@firma.com").GetRootFolder.Folders("Posteingang").Folders("BeispielOrdner")
Grüße Uwe
bigfudge
bigfudge 01.10.2014 aktualisiert um 09:22:34 Uhr
Goto Top
Moin colinardo,

Ne also ich habe das ganze auf Englisch. Der Ordner liegt auf der selben Ebene wie die Inbox (= Posteingang?)

Also hier steht bei mir in Outlook:

oberste Ebene:

Mailxbox - Name, Vorname

nächste Ebene:
- Deleted Items
- Drafts
- Inbox
- FolderDenIchWill


Wenn ich Rechtsklick auf die Mailbox mache (oberstes Element, ist das der Store?), Eigenschaften, Advanced steht unter General der Microsoft Exchangeserver: outlook.firma.com und die Mailbox: Name, Nachname

Hat das vllt. irgendeinen Effekt auf den Zugriff auf einen anderen Store?

Gruß

EDIT: sowas habe ich auch schon versucht:

 Set colStores = Application.Session.Stores
    For Each oStore In colStores
        Set oRoot = oStore.GetRootFolder
        Set Inbox = oRoot.Folders("MeinFolder")     
    Next
colinardo
Lösung colinardo 01.10.2014 aktualisiert um 09:43:33 Uhr
Goto Top
woher soll ich wissen das du ein englisches Benutzt ? face-smile

In diesem Fall sieht es so aus:
Set Inbox = Application.Session.Stores("Mailxbox - Name, Vorname").GetRootFolder.Folders("BeispielOrdner")  
Der Name hinter Stores() muss genau dem Namen des Rootknotens entsprechen, so wie er bei die in der Baumansicht steht !
Ansonsten mach mal ein Screenshot, dann ist das schnell abgehakt!

Um die die Namen aller Stores anzeigen zu lassen kannst du folgenden Code nutzen:
for each store in Application.Session.Stores
 debug.print store.name
Next
Die Ausgabe erfolgt dann im Debug-Bereich des VBA Editors.
bigfudge
bigfudge 01.10.2014 um 09:40:44 Uhr
Goto Top
Hab das "Mailbox - Name, Vorname" jetzt mal aus den Properties kopiert und es scheint zu funktionieren!
Hatte wohl einen sehr komischen Fehler dadrin, habe das sehr sehr oft kontrolliert :D

Warum geht das hier nicht mit der normalen EMail-Adresse?

Gruß!
colinardo
colinardo 01.10.2014 aktualisiert um 09:49:05 Uhr
Goto Top
Zitat von @bigfudge:
Warum geht das hier nicht mit der normalen EMail-Adresse?

Die Bezeichnung ist bei jedem Exchange etwas unterschiedlich.
Es gibt noch einige andere Varianten wie du den Store zuweisen kannst, z.b. über die Accounts, aber das lass ich dir mal als Hausaufgabe, hab gerade wenig Zeit.
Die integrierte VBA Referenz im VBA Editor ist dein Freund. Also lese dich dort unbedingt mal ein, dann musst du nicht wegen jedem Furz nen Thread aufmachen face-wink

Grüße Uwe
bigfudge
bigfudge 01.10.2014 aktualisiert um 12:24:10 Uhr
Goto Top
Wie in dem anderen Thread schonmal erwähnt haben diese Ordner auf dem Zielrechner diese komischen "blauen Pfeile", habe mich nun mal etwas genauer informiert und es scheint sich hierbei um eine shared-source zu handeln.

Da du meintest Voraussetzung für die Zuweisung bzw. das Durchsuchen des Ordners ist, dass es lokal verfügbar ist - ist dies bei so einer shared-source der Fall?

Darüber hinaus scheint diese ja nicht direkter Teil einer Mailbox zu sein.

Anbei mal ein Screenshot von dem Rechner auf dem es letztendlich laufen sollte.

http://www.directupload.net/file/d/3762/hr9ix9pv_jpg.htm

EDIT: vllt. wäre es auch eine Lösung einfach diese Mails die dort ankommen über eine Regel in einen lokal verfügbaren Ordner zu verschieben? Ich weiß nicht ob das generell möglich ist aufgrund irgendwelcher Berechtigungen.

viele Grüße,
fudge
colinardo
colinardo 01.10.2014 aktualisiert um 12:33:10 Uhr
Goto Top
kann das hier gerade nicht testen, Liste dir die Namen der Stores wie oben geschrieben mal auf, das ist vermutlich ein freigegebenes Postfach, welches mit eingebunden ist. Wenn dieser Store in der Ausgabe mit aufgelistet wird, sollte es damit genauso laufen ... Ansonsten kann es auch eine proprietäre Einbindung einer Software sein die z.B. Ordner selber synchronisiert, es könnte also durchaus sein das es sich nicht ansprechen lässt, kann ich aber ohne weitere Details über das Konto nicht sagen ...
colinardo
colinardo 01.10.2014 aktualisiert um 12:36:50 Uhr
Goto Top
bigfudge
bigfudge 01.10.2014 aktualisiert um 13:45:28 Uhr
Goto Top
Also das Makro gibt nicht direkt den Namen des Ordners als Store aus, sondern eben den Store in dem er liegt (DE, xxxxxx.pool-id, siehe Screenshot)

via
 Set Inbox = Application.Session.Stores("xxxxx.pool-id").GetRootFolder.folders("FolderName")   
kriegt man keine Fehlermeldung, aber das Skript tut auch nichts.

Wenn er in Outlook aber zumindest lesend darauf zugreifen kann müsste dass das Makro doch eigentlich auch können oder nicht?
colinardo
colinardo 01.10.2014 aktualisiert um 13:50:46 Uhr
Goto Top
ich kenne deinen eigenen Code nicht, und was du in dem Ordner überhaupt machen willst...
bigfudge
bigfudge 01.10.2014 aktualisiert um 13:58:23 Uhr
Goto Top
Ich lese eigentlich nur den Sender aus und vergleiche den mit dem Absender der eingetroffenen Mail. Aber wenn das ganze Makro auf dem Zielrechner mit einem normalen Ordner funktioniert müsste es ja theoretisch auch mit dem shared-folder gehen, wenn die Zuweisung bzw. Berechtigung dafür richtig ist.

EDIT: haben jetzt auf dem Zielrechner die dafür zuständige Regel editiert damit es in einen normalen Ordner verschoben wird. Jetzt funktioniert eigentlich alles wie es soll, nur nicht sonderlich schön :D

Gruß
colinardo
colinardo 01.10.2014 aktualisiert um 14:04:32 Uhr
Goto Top
Ohne Zielsystem vor mir zu haben leider schwierig hier weiter zu helfen ...Da hilft nur Debugging ...
bigfudge
bigfudge 01.10.2014 um 14:15:18 Uhr
Goto Top
Ja, es funktioniert ja mittlerweile zum Glück, werde mich demnächst aber nochmal genauer damit beschäftigen!

Eine Überlegung hatte ich gerade noch. Wenn die Mail in dem shared-folder ankommt wird ja schätze ich mal das newMailex event ausgelöst. Per Regel wird diese Mail dann in den lokalen Ordner kopiert.

Hat diese kopierte Mail, dann eine andere EntryID? Weil im Skript überprüfe ich erst ob diese ungleich sind, damit die neu angekommene nicht mitbearbeitet wird. Falls diese nun verschieden sind weil die Mail kopiert wurde, würde das ja die Funktion verfälschen - vorausgesetzt die Regel kopiert die Mail schneller als das Makro ausgeführt wird.

Verstehst du was ich meine?

Gruß
colinardo
colinardo 01.10.2014 aktualisiert um 14:23:27 Uhr
Goto Top
Zitat von @bigfudge:
Eine Überlegung hatte ich gerade noch. Wenn die Mail in dem shared-folder ankommt wird ja schätze ich mal das newMailex
event ausgelöst. Per Regel wird diese Mail dann in den lokalen Ordner kopiert.
Das Event wird unabhängig vom Ordner ausgelöst !!
Hat diese kopierte Mail, dann eine andere EntryID? Weil im Skript überprüfe ich erst ob diese ungleich sind, damit die
neu angekommene nicht mitbearbeitet wird. Falls diese nun verschieden sind weil die Mail kopiert wurde, würde das ja die
Funktion verfälschen - vorausgesetzt die Regel kopiert die Mail schneller als das Makro ausgeführt wird.
Habe ich dir bereits im letzten Post schon geschrieben was mit der EntryID passiert ... Diese ändern sich nochmals ...Hier kannst du dich nur auf das MAPI-Feld PR_SEARCH_ID verlassen.
bigfudge
bigfudge 01.10.2014 um 14:39:37 Uhr
Goto Top
Hey,

Ja den Post kenne ich ;) Da waren wir aber beim Verschieben und nicht beim Kopieren oder? Wenn ich kopiere kriege ich womöglich eine neue ID (auch PR_SEARCH_ID).
colinardo
colinardo 01.10.2014 aktualisiert um 14:44:31 Uhr
Goto Top
Zitat von @bigfudge:
Ja den Post kenne ich ;) Da waren wir aber beim Verschieben und nicht beim Kopieren oder? Wenn ich kopiere kriege ich womöglich eine neue ID (auch PR_SEARCH_ID).
hör mal wie soll ich wissen das du kopierst ?? Natürlich ändert sich die EntryID und die PR_...ID wenn an ein neues Element erstellt wird.
Ich empfehle dir dazu mal dich mit MFCMAPI auseinander zusetzen, dann verstehst du genauer was abgeht ...das ist das Equivalent zu Regedit nur für Outlook.

Viel Erfolg
Grüße Uwe
bigfudge
bigfudge 01.10.2014 um 15:13:19 Uhr
Goto Top
Ja das mit dem Kopieren steht ja oben:

"Eine Überlegung hatte ich gerade noch. Wenn die Mail in dem shared-folder ankommt wird ja schätze ich mal das newMailex
event ausgelöst. Per Regel wird diese Mail dann in den lokalen Ordner kopiert."

"Hat diese kopierte Mail, dann eine andere EntryID? ..."

Ist ja auch egal, überliest man leicht - Ich überbeanspruche dich auch sehr :D.

Meine Idee war jetzt einfach über die Pause Sub von dir eine Pause zu machen, damit die Mail auf jeden Fall in den lokalen Ordner kopiert wurde bevor das Makro mit der eigentlichen Abarbeitung anfängt.

Dann kann ich in der späteren Verarbeitung einfach beim Schleifendurchlauf die Bedingung so ändern, damit eine Übereinstimmung mehr nötig ist.

Der Vgl. mit der EntryID ist eh nur dazu da, damit die neuankommende Mail nicht doppelt gezählt wird.

Scheint jetzt auch zu funktionieren, meinst du eine Sekunde ist ausreichend für das ausführen der Regel oder sollte man da evt. etwas mehr einplanen?