Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VBA: Items.Find

82 views
Skip to first unread message

Erik Reischl

unread,
Aug 20, 2001, 12:55:57 PM8/20/01
to
Hallo NG,

anscheinend gibt die Find-Methode der Items-Auflistung kein ContactItem
zurück. Aber welchen Typs ist es dann?

Ich habe folgenden Code:

---BEGIN---
'Verweis auf: Microsoft Outlook 8.0 Object Library (msoutl8.olb)

Dim i As Integer
Dim myApp As Outlook.Application
Dim myNameSpace As Outlook.NameSpace
Dim myFolder As Outlook.MAPIFolder
Dim myItem As Outlook.ContactItem

Set myApp = New Outlook.Application
Set myNameSpace = myApp.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(olFolderContacts)

'Geht nicht: Error 13 - Typen unverträglich
Set myItem = myFolder.Items.Find("[Firstname] = ""Christine""")

'Geht nicht: Error 13 - Typen unverträglich
For Each myItem In myFolder.Items
'Tue irgendetwas
Next myItem

'Geht:
For i = 1 To myFolder.Items.Count
If myFolder.Items(i).FirstName = "Christine" Then
myFolder.Items(i).Display
End If
Next i
---END---

Ich hoffe, daß ich hier überhaupt richtig bin, ansonsten bitte ich um Angabe
der korrekten NG.

Vielen Dank,

Erik Reischl

--
Two roads diverged in a wood, and I -
I took the one less traveled by...
(Robert Frost)

www.erik-reischl.de


Jürgen Häußner

unread,
Aug 20, 2001, 3:06:37 PM8/20/01
to
hi,
ich muß dich enttäuschen, dein code stimmt 6 funktioniert, ich habe ihn mit
outlook 2000 & auch mit outlook 98 getestet.
die find-methode gibt das 1. objekt in der auflistung zurück, daß deinem
filterkriterium entspricht.
ich würde den fehler mal nicht im code sondern in deinem
outlook-kontakte-ordner suchen. sind da irgendwelche elemente drin, die
nicht reingehören?
ciao
jürgen.


"Erik Reischl" <rei...@raven-infotech.de> schrieb im Newsbeitrag
news:#7mhvjZKBHA.1220@tkmsftngp02...

Erik Reischl

unread,
Aug 21, 2001, 1:57:20 AM8/21/01
to
"Jürgen Häußner" <juergen....@t-online.de> wrote in message
news:9lrn7b$6nm$04$1...@news.t-online.com...
> [...]

> ich würde den fehler mal nicht im code sondern in deinem
> outlook-kontakte-ordner suchen. sind da irgendwelche elemente drin, die
> nicht reingehören?

Hi Jürgen,

Nein, das sind alles Kontakte. Vor allem wundert mich, daß ich den Ausdruck


myFolder.Items.Find("[Firstname] = ""Christine""")

als solchen markieren kann und dann über F9 auswerten, und dann gibt er mir
korrekt das aus. Tatsache bleibt also, daß "myItem" vom Typ ContactItem ist
und xxx.Find() offensichtlich nicht. Wie der folgende Code zeigt:

> > 'Geht nicht: Error 13 - Typen unverträglich
> > For Each myItem In myFolder.Items
> > 'Tue irgendetwas
> > Next myItem

liegt das Problem sogar nicht einmal in der .Find-Methode, sondern schon in
der Items-Auflistung.

Hat jemand eine Idee?

Gruß,

Erik

Hans-Juergen Neschtschenko

unread,
Aug 21, 2001, 2:12:59 AM8/21/01
to
Wenn du myItem as object dimensionierst und dir für alle myItems die
Messageclass anzeigen lässt, wirst du vielleicht rauskriegen, welchen Typ
Christine hat. Vielleicht ist sie wirklich kein contact für Dich :-)

--
HTH - Hans-Jürgen
----------
Viele gute Antworten bei Folke: http://www.outlook-net.de
Und bei Peter: http://home.t-online.de/home/p.raddatz/
---------------------


"Erik Reischl" <rei...@raven-infotech.de> schrieb im Newsbeitrag

news:eDnaMYgKBHA.1952@tkmsftngp02...

Erik Reischl

unread,
Aug 21, 2001, 3:31:09 AM8/21/01
to
"Hans-Juergen Neschtschenko" <nescht...@t-online.de> wrote in message
news:OGReVhgKBHA.904@tkmsftngp02...

> Wenn du myItem as object dimensionierst und dir für alle myItems die
> Messageclass anzeigen lässt, wirst du vielleicht rauskriegen, welchen Typ
> Christine hat. Vielleicht ist sie wirklich kein contact für Dich :-)

Hi Hans-Juergen,

myFolder.Items.Find("[Firstname] = ""Christine""") hat die messageclass
IPM.Contact

Für myItem kann ich die Messageclass aber nicht anzeigen, solange noch kein
Objekt erstellt wurde, da komme ich also nicht weiter :-(

Gruß,

Erik

P.S.: Oje, heißt das jetzt, daß ich den Kontakt zu beiden "Christine"s
abbrechen muß (sind nämlich zwei in meiner Adressenliste)? ;-)))

Hans-Juergen Neschtschenko

unread,
Aug 21, 2001, 6:59:37 AM8/21/01
to
Hast du die Zeile
Dim myItem As Outlook.ContactItem
geändert, wie von mir vorgeschlagen, in
Dim myItem As Object
?

--
HTH - Hans-Jürgen
----------
Viele gute Antworten bei Folke: http://www.outlook-net.de
Und bei Peter: http://home.t-online.de/home/p.raddatz/
---------------------
"Erik Reischl" <rei...@raven-infotech.de> schrieb im Newsbeitrag
news:OOL4nMhKBHA.568@tkmsftngp05...

Erik Reischl

unread,
Aug 21, 2001, 10:06:06 AM8/21/01
to
"Hans-Juergen Neschtschenko" <nescht...@t-online.de> wrote in message
news:eSQ1fBjKBHA.1268@tkmsftngp05...

> Hast du die Zeile
> Dim myItem As Outlook.ContactItem
> geändert, wie von mir vorgeschlagen, in
> Dim myItem As Object

Ja, klar, das geht. Aber dann kann ich mir die Frage nach der MessageClass
sparen, denn das muß dann zwangsläufig IPM.Contact sein.

Also mit "Object" geht es, ein Rätsel bleibt es dennoch...

Gruß und Danke,

Erik

Hans-Juergen Neschtschenko

unread,
Aug 22, 2001, 2:31:58 AM8/22/01
to
Ich kann nur den Schluss ziehen, dass manchmal early binding doch nicht
richtig funzt.
Mal abgesehen von deiner Christine (die ja ein brauchbarer Typ zu sein
scheint) - es können in Kontaktordnern unter bestimmten Voraussetzungen
durchaus auch andere Typen leben. Und in OL2000 leben dann sogar
defaultmäßig die distribution lists dort. Spätestens dann würdest du mit der
Dimensionierung "as Outlook.Contactitem" sowieso auf Probleme stoßen.
Also ist der Weg "as Object" und anschließend (bevor man was mit Christine
anfängt - in deinem Code "Tue irgendwas") erst schauen, ob das Item ein
Kontakt ist, empfehlenswerter.
Ich glaube sogar, mal in der MSKB irgendwas zum early binding von Items
gelesen zu haben - vielleicht in der Art "Microsoft hat anerkannt,
dass...blahblah".

--
HTH - Hans-Jürgen
----------
Viele gute Antworten bei Folke: http://www.outlook-net.de
Und bei Peter: http://home.t-online.de/home/p.raddatz/
---------------------
"Erik Reischl" <rei...@raven-infotech.de> schrieb im Newsbeitrag
news:OSZfUpkKBHA.1396@tkmsftngp05...

Erik Reischl

unread,
Aug 22, 2001, 4:06:22 AM8/22/01
to
"Hans-Juergen Neschtschenko" <nescht...@t-online.de> wrote in message
news:ubJtmQtKBHA.1244@tkmsftngp02...

> Ich kann nur den Schluss ziehen, dass manchmal early binding doch nicht
> richtig funzt.
> Mal abgesehen von deiner Christine (die ja ein brauchbarer Typ zu sein
> scheint) - es können in Kontaktordnern unter bestimmten Voraussetzungen
> durchaus auch andere Typen leben. Und in OL2000 leben dann sogar
> defaultmäßig die distribution lists dort. Spätestens dann würdest du mit
der
> Dimensionierung "as Outlook.Contactitem" sowieso auf Probleme stoßen.
> Also ist der Weg "as Object" und anschließend (bevor man was mit Christine
> anfängt - in deinem Code "Tue irgendwas") erst schauen, ob das Item ein
> Kontakt ist, empfehlenswerter.
> Ich glaube sogar, mal in der MSKB irgendwas zum early binding von Items
> gelesen zu haben - vielleicht in der Art "Microsoft hat anerkannt,
> dass...blahblah".

Morgen Hans-Juergen,

danke für die Ausführungen. Ich sehe das mittlerweile auch so. Merkwürdig
ist und bleibt es. Da meine spätere Anwendung aber sowieso erst überhaupt
prüfen soll, ob Outlook existiert und wenn ja, welche Version, ist late
binding ohnehin unumgänglich. Ich war nur sehr verstört, weil ich lauter
Code gesehen habe, der wie meiner war, aber meiner funktionierte eben nicht.

Ich stöbere mal in der KB (hab ich zwar schon, aber nicht gewissenhaft
genug).

Gruß,

0 new messages