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

Prüfen ob Outlook bereits offen

Forumthread: Prüfen ob Outlook bereits offen

Prüfen ob Outlook bereits offen
09.08.2006 10:22:54
stefanseevetal
Hallo liebe Excel-Experten!
ich habe noch eine kleine Frage:
Ich habe hier im Forum unten stehenden Code gefunden (Danke Ramses!), um ein einzelnen Excel-Tabellenblatt per Outlook zu senden und am Ende wieder zu löschen. Funktioniert auch einwandfrei!
Aber wie kann ich eine Prüfung einbauen, ob Outlook bereits vorher geöffnet war? Denn wenn es bereits geöffnet war, soll es am Ende auch nicht automatisch geschlossen werden.
Vielleicht kann mir da jemand weiterhelfen?!
Danke und gruß,
Stefanseevetal

Sub Excel_Sheet_via_Outlook_Senden()
Dim Nachricht As Object, OutApp As Object
Dim SavePath As String
Dim AWS As String
SavePath = "E:\Eigene Dateien"
Set OutApp = CreateObject("Outlook.Application")
'Kopiert aktuelles Sheet in eine neue Mappe
'welche nur diese Tabelle enthält
ActiveSheet.Copy
'Speichert die Datei unter dem Tabellennamen und dem Namen in A1
ActiveWorkbook.SaveAs SavePath & "\" & ActiveSheet.Name & " " & ActiveSheet.Range("A1")
'Aktive Arbeitsmappe wird als mail gesendet
AWS = ActiveWorkbook.FullName
'InitializeOutlook = True
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
.To = "irgendwer@Irgenwo.de"
.Subject = "Testmeldung von Excel2000 " & Date & Time
.Attachments.Add AWS
'Hier wird eine normale Text Mail erstellt
'.body = "Das ist ein Test" & vbCrLf & "Bitte ignorieren"
'Hier wird die HTML Mail erstellt
.HTMLBody = "Das ist ein Test." & vbCrLf & "Bitte ignorieren."
'Hier wird die Mail nochmals angezeigt
.Display
'Hier wird die Mail gleich in den Postausgang gelegt
'.Send
'Hier könnte die Datei wieder gelöscht werden
'Kill AWS
End With
OutApp.Quit
Set OutApp = Nothing
Set Nachricht = Nothing
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfen ob Outlook bereits offen
09.08.2006 11:00:50
Luschi
Hallo
mach es so:
 Dim istOffen as Boolean
On Error Resume Next
Set OutApp = GetObject(, "Outlook.Application")
If Err.Number = 429 Then
Set OutApp = CreateObject("Outlook.application")
istOffen = False
End If
istOffen =True
On Error GoTo 0
If Not istOffen Then
OutApp.Quit
End If
Set OutApp = Nothing
...

gruß von Luschi
aus klein-Paris
Anzeige
Danke
09.08.2006 11:52:31
stefanseevetal
Hallo Luschi!
Vielen Dank, funzt super!!!
Gruß,
Stefan
;
Anzeige
Anzeige

Infobox / Tutorial

Prüfen, ob Outlook bereits offen ist


Schritt-für-Schritt-Anleitung

Um zu überprüfen, ob Outlook bereits geöffnet ist, kannst du folgenden VBA-Code in dein Excel-Projekt einfügen. Dieser Code prüft, ob eine Instanz von Outlook läuft, und schließt sie nur, wenn sie nicht bereits offen ist.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject" klickst und "Einfügen" > "Modul" wählst.
  3. Kopiere und füge den folgenden VBA-Code in das Modul ein:
Sub Excel_Sheet_via_Outlook_Senden()
    Dim Nachricht As Object, OutApp As Object
    Dim SavePath As String
    Dim AWS As String
    Dim istOffen As Boolean

    SavePath = "E:\Eigene Dateien"

    ' Prüfen, ob Outlook bereits geöffnet ist
    On Error Resume Next
    Set OutApp = GetObject(, "Outlook.Application")
    If Err.Number = 429 Then
        Set OutApp = CreateObject("Outlook.Application")
        istOffen = False
    Else
        istOffen = True
    End If
    On Error GoTo 0

    ' Kopiert aktuelles Sheet in eine neue Mappe
    ActiveSheet.Copy
    ' Speichert die Datei unter dem Tabellennamen und dem Namen in A1
    ActiveWorkbook.SaveAs SavePath & "\" & ActiveSheet.Name & " " & ActiveSheet.Range("A1")
    AWS = ActiveWorkbook.FullName

    Set Nachricht = OutApp.CreateItem(0)
    With Nachricht
        .To = "irgendwer@Irgenwo.de"
        .Subject = "Testmeldung von Excel " & Date & " " & Time
        .Attachments.Add AWS
        .HTMLBody = "Das ist ein Test." & vbCrLf & "Bitte ignorieren."
        .Display
    End With

    ' Schließe Outlook nur, wenn es nicht bereits offen war
    If Not istOffen Then
        OutApp.Quit
    End If

    Set OutApp = Nothing
    Set Nachricht = Nothing
End Sub

Häufige Fehler und Lösungen

  • Fehler 429: ActiveX-Komponente kann nicht erstellt werden
    Wenn beim Ausführen des Codes der Fehler 429 auftritt, bedeutet dies, dass Outlook nicht installiert oder nicht korrekt registriert ist. Stelle sicher, dass Outlook auf deinem Computer installiert ist.

  • Outlook wird nicht geschlossen
    Stelle sicher, dass der Code zur Prüfung, ob Outlook bereits offen ist, korrekt implementiert ist. Wenn der Code nicht funktioniert, kann es daran liegen, dass das Error-Handling nicht wie gewünscht funktioniert.


Alternative Methoden

Eine alternative Methode zur Überprüfung, ob Outlook offen ist, besteht darin, die Windows-API zu verwenden. Dies erfordert etwas mehr Programmierkenntnis, kann aber für komplexere Anwendungen nützlich sein.


Praktische Beispiele

Hier ist ein praktisches Beispiel, wie du den Code verwenden kannst. Angenommen, du möchtest eine Excel-Tabelle mit Verkaufszahlen per E-Mail versenden. Der oben bereitgestellte Code kann leicht angepasst werden, um die spezifischen Daten für deine E-Mail zu verwenden.


Tipps für Profis

  • Outlook anführungszeichen ändern: Wenn du den Betreff oder den Inhalt der E-Mail anpassen möchtest, achte darauf, Anführungszeichen korrekt zu setzen, um Syntaxfehler zu vermeiden.
  • Automatisierung: Du kannst den Code so erweitern, dass er automatisch bestimmte E-Mails zu festgelegten Zeiten versendet, indem du ihn in einen Timer oder ein Makro integrierst.

FAQ: Häufige Fragen

1. Wie kann ich Outlook ignorieren, wenn ich es nicht verwenden möchte?
Du kannst den Code so anpassen, dass er bestimmte Abschnitte nur ausführt, wenn Outlook offen ist. Wenn du Outlook nicht benötigst, entferne einfach die entsprechenden Zeilen im Code.

2. Funktioniert dieser Code in älteren Excel-Versionen?
Ja, der Code sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen, einschließlich Excel 2010 und neuer. Stelle sicher, dass du die richtigen Berechtigungen hast, um Makros auszuführen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige