Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Option Explicit und olMailItem

Forumthread: Option Explicit und olMailItem

Option Explicit und olMailItem
09.02.2005 11:28:55
Doris Maart
Hallo,
da will ich jetzt mal so richtig vorbildlich mit "Option Explicit"
arbeiten und jetzt meckert VBA das folgende an:
Dim objApp As Object
Dim themail As Object
Set objApp = CreateObject("outlook.application")
Set themail = objApp.CreateItem(olMailItem)

"olMailItem" wird als unbekannte Variable angemäkelt. Auch wenn ich statt Object eine Outlook.Application und Outlook.MailItem angebe, sind diese nicht bekannt.
Da scheint mir irgendwas zu fehlen. Aber was?
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Option Explicit und olMailItem
09.02.2005 11:33:29
Hans W. Herber
Hallo Doris,
ich vermute mal, dass Du in der Entwicklungsumgebung keinen Verweis zu den Microsoft Visual Basic for Application Extensibilities gesetzt hast. Dies wird benötigt, wenn olMailItem erkannt werden soll. Du kannst statt der Konstanten aber auch den Index (1) verwenden und auf den Verweis verzichten. Mit Option Explicit hat das nichts zu tun.
Gruss hans
Anzeige
AW: Option Explicit und olMailItem
10.02.2005 09:29:11
Doris Maart
Wenn ich aber Option Explicit deaktiviere funktioniert's wie gewünscht.
Und es funktioniert mit Option Explicit nicht, auch wenn ich unter Extras/Verweise das Häkchen vor "Microsoft Visual Basic for Application Extensibility 5.3" setze.
Statt der Konstanten (olMailItem) Zahlen einzusetzen ist nur eine Notlösung für mich. Konstanten machen den Code leserlicher.
Anzeige
AW: Option Explicit und olMailItem
13.02.2005 16:39:28
andre
Hallo Doris,
Du hast keinen Verweis auf die Microsoft Outlock Library gesetzt.
;
Anzeige

Infobox / Tutorial

Option Explicit und olMailItem in VBA nutzen


Schritt-für-Schritt-Anleitung

Um Option Explicit in Deinem VBA-Projekt korrekt zu nutzen und das Objekt olMailItem anzusprechen, gehe wie folgt vor:

  1. Verweis setzen: Öffne den VBA-Editor (ALT + F11). Gehe zu Extras > Verweise. Suche nach "Microsoft Outlook XX.0 Object Library" (XX steht für Deine Outlook-Version) und aktiviere das Kontrollkästchen.

  2. Code schreiben: Verwende den folgenden Code, um ein neues E-Mail-Objekt zu erstellen:

    Option Explicit
    
    Sub CreateEmail()
       Dim objApp As Outlook.Application
       Dim themail As Outlook.MailItem
    
       Set objApp = New Outlook.Application
       Set themail = objApp.CreateItem(olMailItem)
    
       ' Hier kannst Du weitere E-Mail-Einstellungen vornehmen
       themail.Subject = "Betreff der E-Mail"
       themail.Body = "Inhalt der E-Mail"
       themail.Display ' oder .Send um die E-Mail direkt zu senden
    End Sub
  3. Code ausführen: Führe das Makro aus, um die E-Mail zu erstellen.


Häufige Fehler und Lösungen

  • Fehler: Unbekannte Variable olMailItem
    Lösung: Stelle sicher, dass Du den Verweis auf die Microsoft Outlook Object Library gesetzt hast. Wenn dies nicht funktioniert, kannst Du die Konstante durch den Index 1 ersetzen.

  • Fehler: Option Explicit deaktiviert die Funktionalität
    Lösung: Option Explicit zwingt Dich, alle Variablen zu deklarieren. Wenn Du die korrekten Objekttypen verwendest (wie Outlook.Application und Outlook.MailItem), sollte der Code auch mit Option Explicit funktionieren.


Alternative Methoden

Wenn Du olMailItem ohne Verweis nutzen möchtest, kannst Du stattdessen die Zahl 0 oder 1 verwenden:

Set themail = objApp.CreateItem(1) ' 1 steht für olMailItem

Diese Methode ist jedoch nicht so leserlich wie die Verwendung von Konstanten.


Praktische Beispiele

Hier sind einige Beispiele, wie Du das CreateItem-Verfahren in VBA nutzen kannst:

  1. E-Mail mit Anhang erstellen:

    Sub CreateEmailWithAttachment()
       Dim objApp As Outlook.Application
       Dim themail As Outlook.MailItem
    
       Set objApp = New Outlook.Application
       Set themail = objApp.CreateItem(olMailItem)
    
       themail.Subject = "E-Mail mit Anhang"
       themail.Body = "Hier ist der Anhang."
       themail.Attachments.Add "C:\Pfad\zum\Anhang.txt"
       themail.Display
    End Sub
  2. E-Mail an mehrere Empfänger senden:

    Sub CreateEmailToMultipleRecipients()
       Dim objApp As Outlook.Application
       Dim themail As Outlook.MailItem
    
       Set objApp = New Outlook.Application
       Set themail = objApp.CreateItem(olMailItem)
    
       themail.Subject = "E-Mail an mehrere Empfänger"
       themail.Body = "Hallo zusammen!"
       themail.To = "empfaenger1@beispiel.com; empfaenger2@beispiel.com"
       themail.Send
    End Sub

Tipps für Profis

  • Verwende Option Explicit immer: Dies hilft, Tippfehler in Variablennamen zu vermeiden und macht Deinen Code robuster.
  • Nutze Konstanten: Wenn möglich, verwende Konstanten wie olMailItem für bessere Lesbarkeit.
  • Debugging: Nutze die Debugging-Tools in VBA, um Fehler schnell zu identifizieren und zu beheben.

FAQ: Häufige Fragen

1. Warum funktioniert mein Code nicht mit Option Explicit?
Antwort: Stelle sicher, dass alle Variablen deklariert sind. Wenn Du Option Explicit verwendest, müssen alle Variablen, einschließlich objApp und themail, korrekt deklariert sein.

2. Was ist der Unterschied zwischen CreateItem und CreateItem(olMailItem)?
Antwort: CreateItem ist eine Methode, die ein neues Element erstellt. Wenn Du CreateItem(olMailItem) verwendest, gibst Du an, dass es sich um ein E-Mail-Element handelt. Du kannst auch den Index verwenden, um den Objekttyp festzulegen.

3. Wie kann ich E-Mails automatisiert versenden?
Antwort: Du kannst das themail.Send-Verfahren verwenden, um E-Mails direkt zu versenden, anstatt sie nur anzuzeigen. Achte jedoch darauf, dass Du dies mit Bedacht tust, um ungewollte E-Mails zu vermeiden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige