Ich arbeite grad mit VBA 6.5. Mein Problem ist, so denke ich, aber eher allgemeiner Natur und in VB oder VBA verschiedener Versionen auf die gleiche Weise zu handeln.
Folgende Situation:
In einem Outlook-Kontakt-Item möchte ich gerne in verschiedenen Feldern Werte ändern. Da ich jetzt nicht mehrfach den Feldnamen eintippen möchte, möchte ich das gerne mit einer Variablen lösen.
Hier sind 2 Beispiel, wo ich Objekt-Eigenschaft eintippe:
vOutlook.Items(vDatensatzIndex).LastNameAndFirstName
vOutlook.Items(vDatensatz_Outlook).HomeTelephoneNumber
Und jetzt möchte ich die beiden Beispiele eben mit einer Variablen ansprechen.
vOutlook.Items(vDatensatzIndex).VariableA
vOutlook.Items(vDatensatz_Outlook).VariableB
Leider krieg ich das nicht hin.
Mit welchem Typ muss ich die Variable definieren? Und wie muss ich der Variablen nachher die Eigenschaft zuweisen?
(Möglicherweise gibt es dazu schon ein paar Einträge hier im Forum oder in der großen weiten WWW-Welt, doch leider hab ich nix gefunden. Wenn jemand einen Artikel kennt, der mir weiterhelfen würde, wär ich auch schon froh über die Info.)
Danke und Grüße
Sabine
vOutlook.Items(vDatensatzIndex).VariableA
vOutlook.Items(vDatensatz_Outlook).VariableB
Leider krieg ich das nicht hin.
Mit welchem Typ muss ich die Variable definieren?
im Direktfenster (bei VBA mit Strg+G erreichbar) gibst Du ein:
?Typename(vOutlook.Items(vDatensatzIndex))
Nach Druck auf Enter sollte in der Zeile darunter der Variablentyp erscheinen. Nehmen wir an, der Typ hieße Contact
Im Code dimensionierst Du dann:
Dim VariableA as Contact
Und wie muss ich der Variablen nachher die Eigenschaft zuweisen?
Vermutlich
VariableA=vOutlook.Items(vDatensatzIndex)
Gruß
Markus
Oh pardon, ich sehe gerade, daß ich irgendwo einen schließenden Tag vergessen habe. Deshalb versuche ich’s nochmal.
vOutlook.Items(vDatensatzIndex).VariableA
vOutlook.Items(vDatensatz_Outlook).VariableB
Leider krieg ich das nicht hin. Mit welchem Typ muss ich die Variable definieren?
Im Direktfenster (bei VBA mit Strg+G erreichbar) gibst Du ein:
?Typename(vOutlook.Items(vDatensatzIndex))
Nach Druck auf Enter sollte in der Zeile darunter der Variablentyp erscheinen. Nehmen wir an, der Typ hieße Contact. Im Code dimensionierst Du dann:
Dim VariableA as Contact
Und wie muss ich der Variablen nachher die Eigenschaft zuweisen?
Vermutlich schlicht so:
VariableA=vOutlook.Items(vDatensatzIndex)
Gruß
Markus
Hallo Markus
vielen, vielen Dank! Das bringt mich schon mal ein bischen weiter
Die Abfrage
?Typename(vOutlook.Items(vDatensatz_Outlook).HomeAddressStreet) ergibt Type String
(So finde ich es auch im Objektkatalog
„Property HomeAddressStreet as String, Element von Outlook.ContactItem“
Das würde also auch passen.)
Ich hab meine Frage vielleicht ein bisserl blöd formuliert. Rein in die Variable krieg ich das.
Nur wie wende ich die Variable an?
Auszug:
Dim vAdresse_Outlook As String
Dim vAdresse_Nokia As String
vAdresse_Outlook = „HomeAddressStreet“
vAdresse_Nokia = „HomeAddressStreet“
vNokia.Items(vDatensatz_Nokia). vAdresse_Nokia = vOutlook.Items(vDatensatz_Outlook). vAdresse_Outlook
Jetzt bekomme ich die Fehlermeldung:
################
Laufzeitfehler ‚438‘:
Objekt unterstützt diese Eigenschaft oder Methode nicht
############
Die Fehlermeldung werte ich jetzt so, das er meine Variablen (hier vAdresse_Nokia und vAdresse_Outlook ) nicht als Eigenschaft erkennt.
Ich müßte also irgendwie die Variable als Objekteigenschaft deklarieren, allerdings gibt es keinen Type Property.
Hallo Sabine,
M.E. geht das nicht so. Ich sehe da auch nicht wirklich einen Sinn dabei. Wenn du es aber dennoch möchtest, so schreibe Dir eine Function die die Variable und das Object entgegen nimmt. Dann durchlaufe via For Each die Eigenschaften des Objectes und prüfe ob der Eigenschaftsname gleich der der Variable ist. Wenn nein, weiter suchen, wenn ja, Wert auslesen und zurückliefern. Wenn die Eigenschaft nicht gefunden wurde dann eine Default Wert zurueckliefern
Je nach Sprache in der schreibst( ich weiss es jetzt gerade nicht), ist der Aufwand relativ gering und einfach
Hört sich vielleicht kompliziert an, ist es aber nicht!
MfG Alex