Syntax für Zugriff auf benutzerdefiniertes Outlookfeld vom Typ Array

Home-›Foren-›Outlook-›Outlook VBA-›Syntax für Zugriff auf benutzerdefiniertes Outlookfeld vom Typ Array

3 Antworten anzeigen - 1 bis 3 (von insgesamt 3)
  • Autor
    Beitrag
  • #47682
    Unbekannt
    Teilnehmer

    Guten Tach

    Ich habe ein Problem, was mich so langsam mürbe macht. Ich lese per VBA auf Outlookdaten aus, auch benutzerdefinierte Felder. Das klappt bei Feldern vom Typ Text wunderbar. Bei Feldern vom Typ Stichwörter (also olkeywords, auch Typ 11 oder vartype vStrArray bzw. 8200 genannt) bekomem ich die richtige Syntax einfach nicht zusammen.

    Der Code bisher: (Auszug)
    —————————————–
    strFolder = \“\\Öffentliche Ordner\\Alle Öffentlichen Ordner\\Referenzen\“
    Set objFolder = OpenMAPIFolder(strFolder)

    For i = 1 To objFolder.Items.Count \’alle Objekte durchlaufen
    Set MyItem = objFolder.Items.Item(i) \’auf entsprechendes Item wechseln

    strtext = MyItem.UserProperties(\“irgendein Textfeld\“)
    strarrayfeld = MyItem.UserProperties(\“Stichwörterfeld\“)

    Next
    ————————-

    Die Zeile strarrayfeld liefert den Fehler \“Typen unverträglich (LaufzeitFehler 13)\“. Ist ja auch logisch, hab ihm ja noch nicht gesagt, auf welches arrayfeld genau ich zugreifen will und übergebe ja quasi das ganze Array. Hab verschiedene Syntax probiert, kommt aber jeweils ein Fehler:

    strarrayfeld = MyItem.UserProperties(\“Stichwörterfeld\“).Value(i)
    strarrayfeld = MyItem.UserProperties(\“Stichwörterfeld\“).Item(i)
    strarrayfeld = MyItem.UserProperties.Value(i)(\“Stichwörterfeld\“)
    strarrayfeld = MyItem.UserProperties.Item(i)(\“Stichwörterfeld\“)
    ….

    Kann mir jemand sagen, wie die korrekte Syntax ist?
    Jeder sachdienliche Hinweis ist willkommen. Mein ewiger Dank wäre mit euch 🙂

    #167537
    MichaelBauer
    Teilnehmer

    Hallo,

    UserProperties(x) liefert ein UserProperty-Objekt. Wenn Du das einer Variablen zuweisen willst, sollte diese als ein Objekt deklariert sein, und die Zuweisung muss mit Set beginnen.

    Das UserProperty-Objekt wiederum hat eine Value-Eigenschaft vom Typ Variant.
    [code]
    Dim v as Variant
    Dim i&
    Dim Prop as UserProperty
    Set Prop=MyItem.UserProperties(…)
    v=Prop.Value
    If IsArray(v) Then
    For i=0 to ubound(v)
    debug.print v(i)
    Next
    Else
    debug.print v
    Endif
    [/code]

    Viele Grüße
    Michael Bauer

    #167542
    Unbekannt
    Teilnehmer

    Hallo Michael

    Klingt logisch…ist es auch :redhead:

    Funktioniert wunderprächtig.
    Danke, dass du dir die Zeit genommen hast, schönes Wochenende.

3 Antworten anzeigen - 1 bis 3 (von insgesamt 3)

-

Hat Ihnen der Beitrag gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Keine Bewertung vorhanden)
Loading...