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

Forumthread: Outlook beenden

Outlook beenden
06.11.2007 16:06:35
carsten.marschall@mwag.de
Habe folgendes VBA unter "Diese Arbeitsmappe" zusammengebastelt: Funktion beim Speichern wird Outlook geöffnet, ein Mail automatisch mit dem Inhalt einer Zelle versendet und Outlook wieder geschlossen. Outlook ist so eingerichtet das dieses Infofenster nicht mehr aufgeht...
Ergebnis: funktioniert auf einem PC völlig ohne Probleme!!!, auf einem anderen PC auch bis auf das Schließen des Outlook (es gibt keine Fehlermeldung) also Outlook bleibt geöffnet. Das möchte ich aber nicht.
wenn man auf diesem Rechner Outlook einmal geöffnet anklickt und danach den VBA für das Schließen separat durchführt dann wird Outlook auch geschlossen.
Kann mir bitte jemand helfen?

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Sub out()
Dim outh
outh = Shell("C:\Programme\Microsoft Office\Office10\OUTLOOK.EXE")
'Sub EMail_senden()
Dim outl As Object
Dim Mail As Object
Set outl = CreateObject("outlook.Application")
Set Mail = outl.CreateItem(0)
Mail.Subject = "QR"
Mail.Body = ActiveSheet.Range("V14").Value
Mail.To = "carsten.marschall@mwag.de"
Mail.Send
'Sub closeOutLook()
Set Mail = Nothing
outl.Quit
Set outl = Nothing
End Sub


Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Outlook beenden
06.11.2007 16:18:00
Tino
Hallo,
könnte es sein, dass Outlook mit dem senden und empfangen nicht fertig ist?
Gruss
Tino

AW: Outlook beenden
06.11.2007 16:35:00
carsten.marschall@mwag.de
Muss ich mal testen, gibts einen code für z.B. 5s warten?

AW: Outlook beenden
06.11.2007 16:41:10
Tino
Hallo,
hier mal ein Code zu warten.

Dim warteZeit As Variant
warteZeit = TimeSerial(Hour(Now), Minute(Now()), Second(Now()) + 5)
Application.Wait warteZeit


Gruss
Tino

Anzeige
AW: Outlook beenden
06.11.2007 16:57:04
carsten.marschall@mwag.de
Danke,
die Zeit ist es nicht, habe folgendes probiert:
Application.Wait (Now + TimeValue("0:00:10"))
Hat auch 10sek gewartet: an meinem PC gehts nun mit 10s Verzögerung, aber vorher ja auch schon und an dem anderem PC hat das auch nicht geholfen ...
Application.Wait (Now + TimeValue("0:00:10"))

Anzeige
AW: noch ein versuch,sonst keine Idee mehr!
06.11.2007 17:12:00
Tino
Hallo,
versuche es mal mit dieser Version, bei mir funktioniert deine aber auch!

Sub MailSenden()
Dim warteZeit As Variant
Dim MyOutApp As Object, MyMessage As Object
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = "Meine E-Mail"
.Subject = "hier der Betreff"
.body = "Mein Text"
.Send  'Hier wird die Mail gesendet
End With
warteZeit = TimeSerial(Hour(Now), Minute(Now()), Second(Now()) + 10)
Application.Wait warteZeit
MyOutApp.Quit
Set MyOutApp = Nothing
Set MyMessage = Nothing
End Sub


Gruss
Tino

Anzeige
AW: noch ein versuch,sonst keine Idee mehr!
07.11.2007 11:50:00
Carsten
Super Tino,
der Code funzt bei beiden Rechnern, habe noch den "autostart" beim Speichern eingebaut und auch danach gehts...
Danke für Deine Hilfe
Carsten

AW: Outlook beenden
06.11.2007 22:13:12
Jens
Hi,
sauber geht das nur mit der API-Funktion WaitForSingleObject, einfach mal googeln,
ist kein typisches Excelproblem.
mfg Jens

Anzeige
AW: Outlook beenden
07.11.2007 10:47:00
Carsten
Hi Jens
ich hatte mich als VBA-Anfänger geoutet...
Habe Infos ergoogelt aber nichts verstanden....
Mfg
Carsten
;
Anzeige
Anzeige

Infobox / Tutorial

Outlook schließen mit VBA: Anleitung und Tipps


Schritt-für-Schritt-Anleitung

Um Outlook über VBA zu schließen, kannst Du den folgenden Code verwenden. Dieser Code öffnet Outlook, sendet eine E-Mail und schließt es anschließend:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim outl As Object
    Dim Mail As Object
    Set outl = CreateObject("Outlook.Application")
    Set Mail = outl.CreateItem(0)
    Mail.Subject = "QR"
    Mail.Body = ActiveSheet.Range("V14").Value
    Mail.To = "carsten.marschall@mwag.de"
    Mail.Send
    Set Mail = Nothing
    outl.Quit
    Set outl = Nothing
End Sub

Stelle sicher, dass Du die richtige Zeile zur E-Mail-Adresse und dem Betreff anpasst. Dieses Skript funktioniert in Excel, wenn Outlook korrekt installiert ist.


Häufige Fehler und Lösungen

  1. Outlook schließt nicht

    • Wenn Outlook nicht geschlossen wird, könnte es daran liegen, dass der E-Mail-Versand noch nicht abgeschlossen ist. Füge eine Warteschleife ein, bevor Du Outlook schließt:
      Application.Wait (Now + TimeValue("0:00:10"))
  2. Outlook schließt sich automatisch nicht

    • Überprüfe, ob Du die Quit-Methode für das Outlook.Application-Objekt verwendest. Wenn das nicht funktioniert, könnte ein anderer Prozess Outlook blockieren.
  3. Keine Fehlermeldung, aber kein Schließen

    • Teste, ob Outlook manuell geöffnet ist, bevor das Skript ausgeführt wird. Manchmal hilft es, Outlook manuell zu starten, bevor das VBA-Skript läuft.

Alternative Methoden

Eine alternative Methode, um das Schließen von Outlook zu steuern, ist die Verwendung der API-Funktion WaitForSingleObject. Diese Methode ermöglicht eine genauere Steuerung über das Warten auf Prozesse. Du kannst online nach Implementierungen suchen, da dies kein typisches Excel-Problem ist.


Praktische Beispiele

Hier ist ein Beispiel, wie Du den Code anpassen kannst, um eine Nachricht zu senden und Outlook danach sicher zu schließen:

Sub MailSenden()
    Dim warteZeit As Variant
    Dim MyOutApp As Object, MyMessage As Object
    Set MyOutApp = CreateObject("Outlook.Application")
    Set MyMessage = MyOutApp.CreateItem(0)
    With MyMessage
        .To = "deine.email@domain.com"
        .Subject = "Hier der Betreff"
        .Body = "Mein Text"
        .Send
    End With
    warteZeit = TimeSerial(Hour(Now), Minute(Now()), Second(Now()) + 10)
    Application.Wait warteZeit
    MyOutApp.Quit
    Set MyOutApp = Nothing
    Set MyMessage = Nothing
End Sub

In diesem Beispiel wird eine E-Mail gesendet und Outlook wartet 10 Sekunden, bevor es geschlossen wird.


Tipps für Profis

  • Verwendung von With-Blöcken: Dies macht Deinen Code sauberer und leichter lesbar.
  • Fehlerbehandlung: Implementiere On Error Resume Next, um Fehler beim Senden von E-Mails zu behandeln, bevor Du Outlook schließt.
  • Benutzerinteraktionen minimieren: Achte darauf, dass alle Dialogfenster in Outlook (wie "Nachricht gesendet") deaktiviert sind, um ein reibungsloses Schließen zu gewährleisten.

FAQ: Häufige Fragen

1. Warum schließt sich Outlook automatisch? Es kann sein, dass eine automatisierte Aufgabe oder ein Makro aktiv ist, das Outlook schließt.

2. Wie kann ich den E-Mail-Versand abbrechen? Nutze die Methode Mail.Cancel in Kombination mit einer entsprechenden Benutzerabfrage, bevor die E-Mail gesendet wird.

3. Funktioniert dieser Code in allen Excel-Versionen? Ja, dieser Code sollte in Excel VBA ab Version 2007 funktionieren, solange Outlook korrekt konfiguriert ist.

Wenn Du weitere Fragen hast, zögere nicht, die Community zu konsultieren!

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