Home-›Foren-›Outlook-›Outlook VBA-›Syntax für Zugriff auf benutzerdefiniertes Outlookfeld vom Typ Array
- Dieses Thema hat 2 Antworten sowie 2 Stimmen und wurde zuletzt vor 14:20 um 9. Januar 2009 von Unbekannt aktualisiert.
- AutorBeitrag
- 8. Januar 2009 um 16:46 #47682UnbekanntTeilnehmer
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 wechselnstrtext = 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 🙂9. Januar 2009 um 12:28 #167537MichaelBauerTeilnehmerHallo,
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 Bauer9. Januar 2009 um 14:20 #167542UnbekanntTeilnehmerHallo Michael
Klingt logisch…ist es auch :redhead:
Funktioniert wunderprächtig.
Danke, dass du dir die Zeit genommen hast, schönes Wochenende. - AutorBeitrag