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

Fragen zu Outlook-VBA

42 views
Skip to first unread message

Gerald Rathjen

unread,
May 29, 2000, 3:00:00 AM5/29/00
to
Hallo,

zur Zeit bin ich dabei, mich in die VBA-Programmierung einzuarbeiten.
Als Applikation habe ich zunächst Outlook 2000 auserkoren, da es nach
Ansicht einiger Fachautoren ein weniger komplexes Objektmodell hat als
beispielsweise Microsoft Excel. Um mir den Einstieg zu erleichtern,
habe ich mir einige White Papers von Microsoft (wie etwa "The
Super-Easy Guide") heruntergeladen und durchgelesen. Aus dieser
Anleitung habe ich auch die nachstehende Routine:

Sub LastRecipient()
numberOfRecipients = myItem.Recipients.Count
If numberOfRecipients > 0 Then
Set myRecipient = myItem.Recipients.Item(numberOfRecipients)
MsgBox "The name of the last recipient is " & myRecipient.Name & "."
End If
If numberOfRecipients = 0 Then
MsgBox "There are no recipients in this item."
End If
End Sub

Starte ich den VBA-Interpreter bekomme ich Fehlermeldung
"Laufzeitfehler 424 - Objekt erforderlich". Klicke ich auf die
Schaltfläche "Debug" springt der Cursor auf die Zeile
"numberOfRecipients = myItem.Recipients.Count". Der Versuch, "myItem"
mit Dim und Set zu deklarieren schlugen fehl. Ganz ehrlich, ich weiß
auch nicht, welche Eingaben der Interpreter fordert.

Was mich immer wieder verwundert und zugleich beruhigt: Selbst Autoren
wie Ralf Nebelo machen Fehler. In der Ausgabe 3/2000 ist ein Makro
abgebildet, das die Aufgabe hat, aus Word heraus ein Telefonliste aus
den Kontaktdaten von Outlook zu erzeugen. So sieht der Code aus:

Sub OutlookTelefonliste()
Dim objNameSpace As NameSpace
Dim objKontaktOrdner As MAPIFolder
Dim objKontakt As ContactItem
Documents.Add
ActiveDocument.Tables.Add Range:=ActiveDocument.Content, NumRows:=1,
NumColumns:=4
Set objNameSpace = Outlook.Application.GetNamespace("MAPI")
Set objKontaktOrdner =
objNameSpace.GetDefaultFolder(olFolderContacts)
For Each objKontakt In objKontaktOrdner.Items
With Selection
.TypeText objKontakt.LastName
.MoveRight Unit:=wdCell
.TypeText objKontakt.FirstName
.MoveRight Unit:=wdCell
.TypeText objKontakt.CompanyName
.MoveRight Unit:=wdCell
.TypeText objKontakt.BusinessTelephoneNumber
.MoveRight Unit:=wdCell
End With
Next
Selection.Sort FieldNumber:="Spalte1"
End Sub

Starte ich das Makro in Word, kommt mir die Fehlermeldung "Fehler beim
Kompilieren: Benutzerdef. Typ nicht definiert" entgegen. Als
fehlerhaft markiert der Debugger die Zeile "Dim objNameSpace As
NameSpace".

Ich hoffe, mir kann jemand auf die Füße helfen. Mich irritiert ein
wenig das Objektorientierte Konzept von VBA.

Besten Dank
GERY
BAG JAW e.V.
Gerald Rathjen
Kennedyallee 105-107
53175 Bonn
Email: rat...@jugendsozialarbeit.de

Lutz Morlock

unread,
May 29, 2000, 3:00:00 AM5/29/00
to
"myItem" ist weder deklariert noch verweist es auf irgend ein objekt.
MfG
lutz
"Gerald Rathjen" <rat...@jugendsozialarbeit.de> schrieb im Newsbeitrag
news:39325bdd...@news.btx.dtag.de...

Gerald Rathjen

unread,
May 30, 2000, 3:00:00 AM5/30/00
to
Hallo Lutz,

ich danke Dir für Deine prompte Antwort. Ich wußte zwar, daß ich
myItem nicht deklariert hatte. Mir war aber nicht klar, wie ich die
Objekte erstellen sollte. Mittlerweile habe ich es aber begriffen:

Hier meine Lösung:
Sub LastRecipient()
Dim ThisOutlookSession As Outlook.Application
Set ThisOutlookSession = CreateObject("Outlook.Application")
Dim myItem As Object
Set myItem = ThisOutlookSession.CreateItem(olMailItem)


numberOfRecipients = myItem.Recipients.Count
If numberOfRecipients > 0 Then
Set myRecipient = myItem.Recipients.Item(numberOfRecipients)
MsgBox "The name of the last recipient is " & myRecipient.Name
& "."
End If
If numberOfRecipients = 0 Then
MsgBox "There are no recipients in this item."
End If
End Sub


Gruß
-- Gerald Rathjen

0 new messages