Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: bmwoholic am April 15, 2015, 11:45:10

Titel: Probleme bei Umstellung von 2007 auf 2013
Beitrag von: bmwoholic am April 15, 2015, 11:45:10
Hallo zusammen,

ich habe eine recht aufwendige Datenbank mit einigem VBA code. Die Umstellung von Office 2007 auf Office 2013 steht bevor.
Der Code sollte aus Access heraus in regelmässigen Abständen die inbxo eines zweiten email-accounts überprüft, und bei bestimmten kriterien den Text einliest und verarbeitet.
In Betrieb auf Access 2013 habe ich das problem, das folgender code immer Fehler Nr "-2147221233"
"Der versuchte Vorgang konnte nicht ausgeführt werden. Ein Objekt wurde nicht gefunden." schmeisst - obwohl er in 2007 einwandfrei lief. Gab es diesbezüglich Änderungen???





Public Sub email_Abfrage()

    Dim oOutlook As Outlook.Application
    Dim oNamespace As Outlook.NameSpace
    Dim oMail As Outlook.MailItem
    Dim folder As Outlook.MAPIFolder
    Dim vbody As Variant
    Dim const_email As String
    Dim Adresse As String
    Dim Zeile As Single
    Dim Sachbearbeiter As String
    Dim dblZeit As Double
    Dim dDatum As Date
    Dim DS_exist As Boolean
    Dim j As Single
    Dim k As Single

                               

    '===== Email Adresse welche ausgelesen werden soll ==============
   
    Adresse = "meine_adresse@provider.de"
    '================================================================
   
    ' Outlook-Konstante
    Const olFolderInbox = 6
   
   
    ' Outlook-Objekt erstellen
    Set oOutlook = New Outlook.Application
    Set oMail = oOutlook.CreateItem(olMailItem)
    ' Namespace: MAPI
    Set oNamespace = oOutlook.GetNamespace("MAPI")
    ' Outlook-Ordner: "Neue Nachrichten"
    Rem Set folder = oNamespace.GetDefaultFolder(olFolderInbox)
    'Set folder = oOutlook.Session.Folders("meine_adresse@provider.de")
    ' On Error GoTo LM_importer_error
    On Error Resume Next
    Set folder = oNamespace.Folders("Postfach - meine_adresse@provider").Folders("Inbox")
   
    If Err.Number = -2147221233 Then
        MsgBox "Ihr Postfach ist nicht korrekt eingerichtet. Wenden sie sich an den Systemadministrator.", vbCritical
       
        Exit Sub
    End If
    On Error GoTo 0
   
    ' alle Mails durchlaufen
    j = folder.Items.Count
    Do While j > 0
       
            ' Abfrage auf mail.item
            On Error Resume Next
               
            Set oMail = folder.Items(j)
            If Err.Number <> 0 Then
                Rem Debug.Print Err.Number
                On Error GoTo 0
                GoTo weiter
            End If

            'If oMail.UnRead = True Then
                If oMail.SenderEmailAddress = Adresse Then
                        Rem debug.print "Import: JA"
                        '===== Absicherung vor doppelten Einträgen =====
                        ' Überprüfung ob Daten bereits importiert wurden mit Kriterien empfangszeit und Absender
                        ' Inhalt der Mail Zeilenweise auslesen
                            Zeile = 1
                            For Each vbody In Split(oMail.Body, vbCrLf)
                                ' vbody ist der Inhalt der jeweiligen Zeile in der Mail
                                ' k deklariert die Länge der Beschriftung welche vor dem Variableninhalt steht
                               
                                Select Case Zeile
                                     Case 30       ' Konakt
                                        k = 9
                                        If Len(vbody) > k Then Sachbearbeiter = Right(vbody, Len(vbody) - k)
                                        Exit For
                                End Select
                               
                            Zeile = Zeile + 1
                            Next vbody
                       
                        dblZeit = CDbl(CDate(oMail.ReceivedTime))       'Uhrzeit in der die email gesendet wurde als lng
                        ' rem debug.print dblZeit
                        dDatum = CDate(Left(oMail.ReceivedTime, 10))         'Datum des Mailversands
                        ' rem debug.print dDatum
                        DS_exist = False
                        DS_exist = qdfTest(Sachbearbeiter, dblZeit)   ' Gibt true zurück wenn der Eintrag bereits besteht
                       
                       
                        If DS_exist = False Then
                                Call LM_Importer
                                Exit Sub
                       
                        ElseIf DS_exist = True Then
                                oMail.UnRead = False

                        End If
                'End If
             End If
weiter:


             j = j - 1      ' Zählt die Menge aller emails runter bis alle durchsucht wurden
    Loop
   
    ' Objekte zerstören
    Set oMail = Nothing
    Set folder = Nothing
    Set oNamespace = Nothing
    Set oOutlook = Nothing


   
    Exit Sub

email_abfrage_error:
    MsgBox "Es ist ein Fehler aufgetreten." & vbCrLf & vbCrLf & "Bitte kontaktieren Sie den Administrator.", vbCritical
   
   

End Sub




Danke im Vorraus für eure Hilfe.

gruß
Danijel
Titel: Re: Probleme bei Umstellung von 2007 auf 2013
Beitrag von: MaggieMay am April 15, 2015, 12:40:48
Hi,

wird denn oNamespace noch korrekt initialisiert?
Titel: Re: Probleme bei Umstellung von 2007 auf 2013
Beitrag von: bmwoholic am April 15, 2015, 12:43:14
wie kann ich das rausfinden?


in den access-Sachen kenne ich mich recht ordentlich aus, aber die email-Prozedur habe ich leider nur abgewandelt von dem was ich im Netz gefunden habe. Habe mich mit outlook vba bisher seeehr wenig befasst.
Titel: Re: Probleme bei Umstellung von 2007 auf 2013
Beitrag von: MaggieMay am April 15, 2015, 12:48:38
Du kannst den Code im Unterbrechungsmodus testen und nach jedem Befehl den Zustand der Variablen und Objekte kontrollieren.
Titel: Re: Probleme bei Umstellung von 2007 auf 2013
Beitrag von: bmwoholic am April 15, 2015, 13:01:21
soweit klar - aber ich weiss nicht was ich da erwarte.
Der wert von oNamespace ist "Mapi"
Das hab ich der Variablen zugewiesen. Ich weiss nur nicht wofür es steht und was es tut.

der Fehler entsteht auf jeden fall in folgendem Codeteil



   Set folder = oNamespace.Folders("Postfach - rolle.aschheim").Folders("Inbox")

Titel: Re: Probleme bei Umstellung von 2007 auf 2013
Beitrag von: MaggieMay am April 15, 2015, 13:35:40
Könnte es sein, dass das Postfach in Outlook 2013 anders anzusprechen bzw. anders benannt ist?

Schau dir doch im Unterbrechungsmodus das oNamespace-Objekt im Lokalfenster mal genauer an.
Titel: Re: Probleme bei Umstellung von 2007 auf 2013
Beitrag von: bmwoholic am April 15, 2015, 14:40:13
ich habe mal folgenden Code laufen lassen, der listet einfach alle vorhandenen Ordner auf. Dieser läuft. Also muss mein Fehler irgendwo in meinem Syntax stecken. Nur sehen tu ich ihn nicht.  :-\



Public Sub test()
    Dim oOutlook As Outlook.Application
    Dim oNamespace As Outlook.NameSpace
    Dim Folder As Outlook.MAPIFolder
    Dim strFolderlist As String
    Dim TargetFolder As Outlook.MAPIFolder
   
    strFolderlist = "Your Outlook NameSpace contains these folders:"

    Set oOutlook = New Outlook.Application
    Set oMail = oOutlook.CreateItem(olMailItem)
    ' Namespace: MAPI
    Set oNamespace = oOutlook.GetNamespace("MAPI")
    With oNamespace
        For Each Folder In oNamespace.Folders
            strFolderlist = strFolderlist & Folder.Name & vbCr
            For Each TargetFolder In Folder.Folders
                Debug.Print TargetFolder.Name
            Next TargetFolder
        Next Folder
    End With


End Sub

Titel: Re: Probleme bei Umstellung von 2007 auf 2013
Beitrag von: MaggieMay am April 15, 2015, 14:46:33
Zitatder listet einfach alle vorhandenen Ordner auf
Und war der Ordner "Postfach - rolle.aschheim" dabei??

Du hättest wohl auch die Variable "strFolderlist"  noch mit ausgeben sollen...
Titel: Re: Probleme bei Umstellung von 2007 auf 2013
Beitrag von: bmwoholic am April 15, 2015, 14:57:32
nö - ich habe nur zwei mal Inbox
einer gehört zu meinem eigenen Account und die zweite zum account Rolle.Aschheim

Bei 2007 hat genau das "Postfach - Rolle.aschheim" bewirkt das ich aus dem 2. Account auslese.

ich brauche auch NUR die mails aus dem zweiten postfach welches unter rolle.aschheim läuft.
Titel: Re: Probleme bei Umstellung von 2007 auf 2013
Beitrag von: MaggieMay am April 15, 2015, 14:59:04
Dann solltest du dir halt alle Foldernamen ausgeben lassen, um zu kontrollieren, ob das Postfach nicht vielleicht doch anders heißt.
Titel: Re: Probleme bei Umstellung von 2007 auf 2013
Beitrag von: bmwoholic am April 15, 2015, 15:30:59
auch wenn ich mir alle Ordner anzeigen lasse, so bekomme ich folgendes raus für meinen gewünschten ordner.

\\rolle.aschheim\Inbox

welche Syntax kann ich noch verwenden um in diesem Ordner z.B. items.count zu machen oder entsprechend Items zu verschieben???


Tut mir leid das ich da ein wenig nerve - aber ich steh echt auf dem Schlauch.
Titel: Re: Probleme bei Umstellung von 2007 auf 2013
Beitrag von: MaggieMay am April 15, 2015, 16:03:30
Also heißt der Ordner nicht "Postfach - rolle.aschheim" sondern "rolle.aschheim"?!

Oder wie bist du jetzt an die zuletzt gezeigte Ausgabe gekommen?

Wozu willst du "items verschieben"?
Titel: Re: Probleme bei Umstellung von 2007 auf 2013
Beitrag von: bmwoholic am April 16, 2015, 08:34:16
Hallo,
neuer Tag - neues Glück. Vielleicht bekommen wir es ja heute zum laufen.

also ich habe mit folgendem code


Sub EnumerateFoldersInStores()
    Dim colStores As Outlook.Stores
    Dim oStore As Outlook.Store
    Dim oRoot As Outlook.Folder
   
    On Error Resume Next
    Set colStores = Application.Session.Stores
    For Each oStore In colStores
        Set oRoot = oStore.GetRootFolder
        Debug.Print (oRoot.FolderPath)
        EnumerateFolders oRoot
    Next
End Sub

Private Sub EnumerateFolders(ByVal oFolder As Outlook.Folder)
    Dim folders As Outlook.folders
    Dim Folder As Outlook.Folder
    Dim foldercount As Integer
   
    On Error Resume Next
    Set folders = oFolder.folders
    foldercount = folders.Count
    'Check if there are any folders below oFolder
    If foldercount Then
        For Each Folder In folders
            Debug.Print (Folder.FolderPath)
            EnumerateFolders Folder
        Next
    End If
End Sub



mir in outlook alle ordner auflisten lassen. Dadurch habe ich diesen Pfad rausbekommen



Ich erinnere mich noch das beim erstellen des Codes für das 2007 diese Bezeichnung "Postfach - rolle.aschheim" notwendig war damit das Postfach als ganzes erkannt wird.
Titel: Re: Probleme bei Umstellung von 2007 auf 2013
Beitrag von: MaggieMay am April 16, 2015, 13:42:53
Nun, das sieht jetzt offensichtlich anders aus. Du kannst das Postfach nur unter dem in Outlook bekannten Namen ansprechen. Damit wäre das jetzt wohl geklärt.

In O2010 gibt es bei mir aber auch schon den Vorsatz "Postfach - " nicht.
Titel: Re: Probleme bei Umstellung von 2007 auf 2013
Beitrag von: bmwoholic am April 16, 2015, 15:01:37
Also ich bekomme es irgendwie nicht hin.

könntest du mir mal sagen wie das in deinem Office 2010 aussehen würde, wenn ich einen unterordner eines bestimmten accounts auswähle, und darin items.count mache??

den Folder brauche ich als variable um später damit zu arbeiten.  - Ich stehe leider voll auf dem schlauch.

Danke nochmal für eure tatkräftige hilfe hierbei.
Titel: Re: Probleme bei Umstellung von 2007 auf 2013
Beitrag von: MaggieMay am April 16, 2015, 15:13:20
Was passiert denn, wenn du den Folder "rolle.aschheim" zu öffnen versuchst?
Es kann doch nicht sein, dass der auch nicht gefunden wird.
Titel: Re: Probleme bei Umstellung von 2007 auf 2013
Beitrag von: bmwoholic am April 16, 2015, 15:43:52
Das ist lustig, denn  ich habe das schon probiert und es ging nicht.

jetzt habe ich es im PRODUKTIVEN Frontend geändert um sicher zu gehen das ich keine fehlerhaften Änderungen im code habe, und da funktioniert es. Eine kleinigkeit die sehr viel Ärger gemacht hat.

Ich danke noch mal ganz herzlich für eure Hilfe.
Gruß
Danijel