Zum Inhalt springen
Hilfe zu Outlook, Thunderbird, KuNoMail & Co.

Syntax für Zugriff auf benutzerdefiniertes Outlookfeld vom Typ Array

Überblick

Status
Beantwortet
Gefragt von
Unbekannt
Gefragt am
Antworten
2
Letzte Antwort
von Unbekannt

Frage

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 🙂

2 Antworten

2 Antworten anzeigen - 1 bis 2 (von insgesamt 2)
  1. 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.

    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
    

    Viele Grüße
    Michael Bauer

  2. Hallo Michael

    Klingt logisch…ist es auch :redhead:

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

2 Antworten anzeigen - 1 bis 2 (von insgesamt 2)
  • Sie müssen angemeldet sein, um zu diesem Thema eine Antwort verfassen zu können.