Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Methode oder Datenobjekt nicht gefunden, an der Stelle .Session

Begonnen von Umbauwfb, Februar 23, 2022, 11:27:51

⏪ vorheriges - nächstes ⏩

Umbauwfb

Hallo,

ich möchte von Access aus in Outlook eine bestimmte Email im Ordner Gesendete Elemente selektieren, um die EntryID auszulesen.

Als Einstieg benutze ich einen Beispiel-Code von Microsoft, den ich im Bereich "Filter" und "zu durchsuchender Ordner" angepasst habe. Den Code will ich später ausbauen, um die Entry-ID zu selektieren und in ein Feld zu schreiben.

Wenn ich kompiliere erhalte ich an der Stelle ".Session" die Fehlermeldung "Methode oder Datenobjekt nicht gefunden". Was fehlt noch im Code? Oder fehlt ein Verweis?

Eigentlich bräuchte ich auch keine Tabelle, weil der Filter eindeutig ist und nur 1ne Email zurückgeben wird. Ich finde aber keinen anderen Einstieg...

Vielen Dank für die Hilfe
Harry

Private Sub cmdEmailSuchen_Click()

    Dim oT As Outlook.Table
    Dim strFilter As String
    Dim oRow As Outlook.Row
    Dim vBetreff As String
    vBetreff = Me.Subject

    'Construct filter for Subject containing 'Office'
    Const PropTag  As String = "https://schemas.microsoft.com/mapi/proptag/"

    strFilter = "@SQL=" & Chr(34) & PropTag & "0x0037001E" & Chr(34) & vBetreff

    'Do search and obtain Table on Inbox
   
    Set oT = Application.Session.GetDefaultFolder(olFolderSentMail).GetTable(strFilter)     'Fehlermeldung bei Session
   
    'Print Subject of each returned item
    Do Until oT.EndOfTable
        Set oRow = oT.GetNextRow
        Debug.Print oRow("Subject")
    Loop

End Sub

PhilS

Zitat von: Umbauwfb am Februar 23, 2022, 11:27:51Wenn ich kompiliere erhalte ich an der Stelle ".Session" die Fehlermeldung "Methode oder Datenobjekt nicht gefunden". Was fehlt noch im Code? Oder fehlt ein Verweis?
Du brauchst eine konkrete Outlook.Application Instanz. - In anderer Funktionalität, die du schon hast solltest du funktionierende Beispiele finden.

Wenn du in Access einfach nur "Application" schreibst, bekommst du deine Access.Application.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Umbauwfb

Hallo PhilS,

ich habe den Code jetzt ergänzt...und den Filter im Ursprungszustand des Microsoft-Beispiels belassen.
Dort dann einen Betrefftext eingesetzt, von dem es eine Email im Ordner "Gesendete Objekte" gibt.
Der Filter wird auch angezeigt, wenn ich mit F8 Zeile für Zeile durch den Code gehe...

Das Direktfenster zeigt:
?strFilter
@SQL="https://schemas.microsoft.com/mapi/proptag/0x0037001E" ci_phrasematch 'Bewerbung um einen Ausbildungsplatz als Bäckerin (4/988/373)'

Debug.Print bringt aber nichts...
Woran kann das noch liegen?

Harry

Private Sub cmdEmailSuchen_Click()

    Dim oT As Outlook.Table
    Dim strFilter As String
    Dim oRow As Outlook.Row
    Dim vBetreff As String
    vBetreff = Me.Subject

    'Construct filter for Subject containing 'Office'
    Const PropTag  As String = "https://schemas.microsoft.com/mapi/proptag/"

'    strFilter = "@SQL=" & Chr(34) & PropTag & "0x0037001E" & Chr(34) & vBetreff
    strFilter = "@SQL=" & Chr(34) & PropTag _
        & "0x0037001E" & Chr(34) & " ci_phrasematch 'Bewerbung um einen Ausbildungsplatz als Bäckerin (4/988/373)'"

    'Do search and obtain Table on Inbox
   
    Set oT = Outlook.Application.Session.GetDefaultFolder(olFolderSentMail).GetTable(strFilter)
   
    'Print Subject of each returned item
    Do Until oT.EndOfTable
        Set oRow = oT.GetNextRow
        Debug.Print oRow("Subject")
    Loop

End Sub

PhilS

Zitat von: Umbauwfb am Februar 24, 2022, 09:21:32?strFilter
@SQL="https://schemas.microsoft.com/mapi/proptag/0x0037001E"; ci_phrasematch 'Bewerbung um einen Ausbildungsplatz als Bäckerin (4/988/373)'

Debug.Print bringt aber nichts...
Woran kann das noch liegen?
Das liegt an dem Filter.

Ich kann dir weder das konkrete Problem noch eine Lösung nennen, aber wenn ich das nachvollziehe, werden bei mir auch Items nicht gefunden, die m.E. eigentlich dem Filter entsprechen müssten.
Außer nochmal die Doku genau lesen, Googlen, und herumprobieren kann ich im Moment keinen Lösungsansatz empfehlen.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

DF6GL

Hallo,

versuch dies:


Private Sub cmdEmailSuchen_Click()


    Dim oOL As New Outlook.Application  'Verweis auf MS Outlook- Library setzen
    Dim oT As Outlook.Table
    Dim strFilter As String
    Dim oRow As Outlook.Row
   

    strFilter = "[Subject] = '" & Me!Betreff & "'"
   
 
    Set oT = oOL.Session.GetDefaultFolder(olFolderSentMail).GetTable(strFilter)
   

    Do Until oT.EndOfTable

        Set oRow = oT.GetNextRow
        Debug.Print oRow.Item("Subject"), oRow.Item("entryID")
     
    Loop
   
    Set oRow = Nothing
    Set oT = Nothing
    Set oOL = Nothing

End Sub
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Umbauwfb

Super! Klappt einwandfrei!

Mir ist natürlich auch sofort aufgefallen, dass Du mir an der Stelle strFilter = ... einen kleinen Fitnesstest eingebaut hast!

Herzlichen Dank für den Code!
Diesen Code verstehe ich jetzt auch vollumfänglich...

Und Danke an die anderen, die geholfen haben
Mit einem schönen Gruß aus Lüneburg
Harry


Private Sub cmdEmailSuchen_Click()
    Dim oOL As New Outlook.Application  'Verweis auf MS Outlook- Library setzen
    Dim oT As Outlook.Table
    Dim strFilter As String
    Dim oRow As Outlook.Row
   
    strFilter = "[Subject] = '" & Me!Subject & "'"
   
    Set oT = oOL.Session.GetDefaultFolder(olFolderSentMail).GetTable(strFilter)

    Do Until oT.EndOfTable
        Set oRow = oT.GetNextRow
'        Debug.Print oRow.Item("Subject"), oRow.Item("entryID")
        Me.EntryID = oRow.Item("entryID")
        Me.Requery
    Loop
   
    Set oRow = Nothing
    Set oT = Nothing
    Set oOL = Nothing
End Sub