Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Outlook Postfächer

Begonnen von Mjay, September 10, 2010, 11:44:44

⏪ vorheriges - nächstes ⏩

Mjay

Hallo,

brauche mal eure Hilfe.
Möchte mehrere Postfächer in Outlook auslesen.
Die Namen der Postfächer stehen in einer Tabelle, auf die Tabelle wird mit Recordset zugegriffen.
Set RS = CurrentDb.OpenRecordset("tblPfAnalyse", dbOpenDynaset, dbSeeChanges)

Auf die Postfächer kann aber nur zugegriffen werden, wenn dieses auch in Outlook eingebunden ist.
Jetzt habe ich versucht wenn ein Postfach nicht eingebunden ist den Fehler abzufangen und mehr oder weniger das
nicht vorhandene Postfach zu überspringen. Leider funkt das aber nicht und es wird der Fehler 'Objekt nicht vorhanden' angezeigt.

Wie kann ich diesen Fehler abfangen bzw. übergehen so das mit dem nächstem Postfach in der Tabelle (Recordset) fortgeführt wird?

Hier der bisherige Code:

Sub tblPfAnalyse()
Dim objOutlook As Object, objnSpace As Object, objFolder As Object, RS As DAO.Recordset, PfName As String
    Set objOutlook = CreateObject("Outlook.Application")
    Set objnSpace = objOutlook.GetNamespace("MAPI")
    Set RS = CurrentDb.OpenRecordset("tblPfAnalyse", dbOpenDynaset, dbSeeChanges)
    Do While Not RS.EOF
        On Error GoTo Err
        PfName = RS!ObjektName
        Set objFolder = objnSpace.Folders(PfName).Folders("Posteingang")
        MsgBox "Mails in Posteingang von '" & PfName & "': " & objFolder.Items.Count
Resume_Err:
        RS.MoveNext
    Loop
    Set objOutlook = Nothing
    Set objnSpace = Nothing
    Set objFolder = Nothing
    RS.Close: Set RS = Nothing
    Exit Sub
Err:
    MsgBox Err.Description
    GoTo Resume_Err
End Sub

Hondo

Hallo,
was hast du in PfName stehen? Bei mir würde "Persönliche Ordner" drin stehen.
Meinst du mit Postfach das Emailkonto? Falls ja ist dein Code nicht richtig.

Andreas

Mjay

Hallo,

unter PfName steht dann der Name des eingebundenen Postfaches.
Also ich habe ja mein Stantart Postfach das den Namen 'Postfach - Vorname.Nachname' trägt.
Dann habe ich noch weitere andere Postfächer in mein Outlook eingebunden die in etwa die Namen wie folgt tragen.

Postfach - ABC
Postfach - XYZ
Postfach - 123
Postfach - 987

Diese stehen dann in der Tabelle bzw. Recordset.
Jetzt lasse ich den Code laufen, welcher auch problemlos läuft.
Nur wenn z.B. Postfach - XYZ nicht in Outlook als Postfach existiert, bekomme ich 'Objekt nicht vorhanden'
Das soll dann aber übersprungen werden und mit Postfach - 123 weiter machen...
Dafür hatte ich dann zum Fehler abfangen

Err:
    MsgBox Err.Description
    GoTo Resume_Err


und mit sollte dann das nächste Postfach in der Liste angesprochen werden

Resume_Err:
        RS.MoveNext
    Loop


Geht aber leider nicht so, aber wie kann es gehen?

Gruß Marc

database

#3
Hallo,

du könntest z.B. die Err.Number eines erzeugten Fehglers ermitteln und dann in der Fehlerbehandlung die Nummer mit dem  ---   bekomme ich 'Objekt nicht vorhanden'  ---  Fewhlercode vergleichen.
Entspricht die Fehlernummer diesem Ereignis, dann KÖNNTEST du per Resume Next  diesen Fehler ignorieren und im Code weiterlaufen.

sieh mal dazu hier rein:

http://devstack.net/wordpress/?p=152

HTH
Peter

p.s. unsauber aber funktioniert

EDIT: Link berichtigt

Mjay

Hallo,

danke für den Tipp mit der Err.Number...
Kannte das zwar, aber bin absolut nicht darauf gekommen das es damit funktionieren könnte.

Gelöst habe ich es jetzt:

If Err.Number <> 0 Then
      GoTo Err
   End If

Resume_Err:
        RS.MoveNext
    Loop

Err:
    MsgBox Err.Description
    GoTo Resume_Err


Danke & Gruß