Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Per VBA prüfen, ob Outlook geöffnet ist

Forumthread: Per VBA prüfen, ob Outlook geöffnet ist

Per VBA prüfen, ob Outlook geöffnet ist
20.03.2016 12:40:21
Nadja
Hallo liebes Forum,
ich weiß, zu meiner Frage existieren schon einige Beiträge in verschiedensten Foren. Leider hat mich keine Antwort zum Ziel gebracht, sodass ich hoffe, dass mich der persönliche Austausch nun doch noch weiterbringt.
Automatisch eine Mail per Outlook verschicken zu lassen ist mir schon geglückt. Um Fehlermeldungen abzufangen, soll jetzt noch die Abfrage dazwischen geschoben werden, ob der Benutzer Outlook überhaupt geöffnet hat (im weiteren Schritt auch gern noch, ob es überhaupt beim User installiert ist, aber das wäre dann nur die Kür ;) ).
Bis jetzt sieht mein Code zum Versenden so aus:
-------CODE-----------------
Dim OutApp As Object
Dim objOLMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set objOLMail = OutApp.CreateItem(0)
With objOLMail
.To = vorname.nachname@firma.de 'Empfänger AN
.CC = ""
.BCC = ""
.Sensitivity = 0 'Vertraulichkeit
.Importance = 1 'Wichtigkeit
.Subject = "Betreff"
.htmlbody = "Nachricht mit Link"
.Send 'Versand
End With
Set objOLMail = Nothing
Set OutApp = Nothing
--------CODE END--------------------
Den Code habe ich auch nur aus einem Forum kopiert und an meine Anforderungen angepasst. D.h., warum man am Ende zum Beispiel objOLMail und OutApp auf Nothing setzt, weiß ich gar nicht. Ich weiß nicht mal, was für Objekte das genau sind.
Ich bedanke mich schonmal für jedwede Hilfe!
Viele Grüße
Nadja

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Per VBA prüfen, ob Outlook geöffnet ist
20.03.2016 14:01:17
KlausF
Hallo Nadja,
probier mal:
Dim OutlookStart As Boolean
Function GetOutlookApp() As Object
On Error Resume Next
Set GetOutlookApp = GetObject(, "Outlook.Application")
If Err.Number  0 Then
Set GetOutlookApp = CreateObject("Outlook.Application")
OutlookStart = True
End If
On Error GoTo 0
End Function
Sub Outlook_OK()
If OutlookStart = True Then
MsgBox "Outlook ok"
Else
MsgBox "Es muß der Verweis auf die Outlook-Library gesetzt werden"
Exit Sub
End If
End Sub
Gruß
Klaus
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA zur Prüfung, ob Outlook geöffnet ist


Schritt-für-Schritt-Anleitung

Um zu prüfen, ob Outlook geöffnet ist, kannst Du den folgenden VBA-Code verwenden. Dieser Code überprüft, ob eine Instanz von Outlook bereits läuft und startet sie gegebenenfalls.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Füge ein neues Modul ein: Klicke mit der rechten Maustaste auf "VBAProject (deineDatei.xlsx)" und wähle Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:
Dim OutlookStart As Boolean

Function GetOutlookApp() As Object
    On Error Resume Next
    Set GetOutlookApp = GetObject(, "Outlook.Application")
    If Err.Number <> 0 Then
        Set GetOutlookApp = CreateObject("Outlook.Application")
        OutlookStart = True
    End If
    On Error GoTo 0
End Function

Sub Outlook_OK()
    GetOutlookApp
    If OutlookStart = True Then
        MsgBox "Outlook ist geöffnet."
    Else
        MsgBox "Outlook ist nicht geöffnet oder nicht installiert."
        Exit Sub
    End If
End Sub
  1. Führe die Subroutine Outlook_OK aus, um die Prüfung durchzuführen.

Häufige Fehler und Lösungen

  • Fehler: "Es muß der Verweis auf die Outlook-Library gesetzt werden"

    • Lösung: Stelle sicher, dass Du die Microsoft Outlook Object Library in den Verweisen aktiviert hast. Gehe zu Extras > Verweise im VBA-Editor und wähle die entsprechende Bibliothek aus.
  • Fehler: Outlook startet nicht richtig

    • Lösung: Überprüfe, ob Outlook korrekt installiert ist und keine Updates ausstehen, die die Funktionalität beeinträchtigen könnten.

Alternative Methoden

Falls Du eine andere Methode bevorzugst, um zu prüfen, ob Outlook geöffnet ist, kannst Du auch die Windows-Schnittstelle nutzen. Hier ein Beispiel, wie Du mit einer API-Abfrage die aktiven Prozesse überprüfen kannst:

Declare PtrSafe Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare PtrSafe Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Function IsOutlookRunning() As Boolean
    Dim procID As Long
    procID = FindWindow("rctrl_renwnd32", vbNullString) ' Der Fenstertitel von Outlook
    If procID <> 0 Then
        IsOutlookRunning = True
    Else
        IsOutlookRunning = False
    End If
End Function

Praktische Beispiele

Hier ist ein praktisches Beispiel, das den Versand einer E-Mail über Outlook integriert, nachdem geprüft wurde, ob Outlook geöffnet ist:

Sub SendMailIfOutlookOpen()
    GetOutlookApp
    If OutlookStart = True Then
        Dim objOLMail As Object
        Set objOLMail = GetOutlookApp.CreateItem(0)
        With objOLMail
            .To = "vorname.nachname@firma.de"
            .Subject = "Betreff"
            .Body = "Nachricht mit Link"
            .Send
        End With
        Set objOLMail = Nothing
    Else
        MsgBox "Outlook ist nicht geöffnet."
    End If
End Sub

Tipps für Profis

  • Fehlerbehandlung: Nutze On Error Resume Next und On Error GoTo für eine effektive Fehlerbehandlung in Deinem Code.
  • Verweise: Stelle sicher, dass Du die richtigen Verweise in Deinem VBA-Projekt gesetzt hast, um Komplikationen zu vermeiden.
  • Automatisierung: Überlege, wie Du die Automatisierung weiter verbessern kannst, indem Du z.B. die E-Mail-Adressen aus einer Excel-Tabelle ziehst.

FAQ: Häufige Fragen

1. Wie kann ich den Status von Outlook in Excel anzeigen? Du kannst die oben genannten Methoden verwenden, um zu überprüfen, ob Outlook geöffnet ist, und eine entsprechende Nachricht an den Benutzer anzeigen.

2. Was mache ich, wenn der Code nicht funktioniert? Überprüfe, ob Du die richtige Outlook-Version installiert hast und ob alle erforderlichen Verweise im VBA-Editor gesetzt sind. Manchmal kann auch ein Neustart von Excel oder Outlook helfen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige