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)

        -