936 Aufrufe
Gefragt in Datenbanken von
Hallo an alle

Ich möchte eine Arbeitsmappe schließen, nachdem ich die Änderungen darin gespeichert habe und dann automatisch eine Mail erzeugt wird.
Speichern und mailen funktioniert bereits, nur hatte ich es bisher so, das dann immer Excel mit geschlossen wurde.
Leider wurden dann auch andere Dokumente ohne zu speichern mit geschlossen.
Vielleicht kann mir jemand von euch weiterhelfen.

Hier mal mein Text im VBA

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim APP_OUTLOOK As Object
Dim MESSAGE As Object

Set APP_OUTLOOK = CreateObject("Outlook.Application")
Set MESSAGE = APP_OUTLOOK.CreateItem(0)


With MESSAGE
.to = "xxxxx"
.Subject = "xxxx"
.HTMLbody = "xxxx-" & _
" <a href=""xxxx> "
.Display


End With


Set APP_OUTLOOK = Nothing
Set MESSAGE = Nothing

ThisWorkbook.Saved = True
Application.Quit

End Sub

4 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

mit
Application.Quit

schließt du Excel.

Ersetze die Zeilen
ThisWorkbook.Saved = True
Application.Quit

durch
ThisWorkbook.Close (True)

dann wird nur die betreffende Arbeitsmappe geschlossen (nachdem sie gespeichert wurde)

Gruß

M.O..
0 Punkte
Beantwortet von
Vielen Dank für die schnelle Antwort.

leider löst das mein Problem nur bedingt.

Wenn ich etwas ändere und abspeicher, schickt er dann 2 Mails.
Erst wenn ich erneut auf speichern gehe, öffnet er nochmals eine mail (dann die dritte) und erst dann schließt sich die Arbeitsmappe :(
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

du hast das Makro ja in die Before-Save-Routine eingebaut. Dann wird das Makro natürlich jedes Mal ausgeführt, wenn du speicherst.
Willst du das nicht, so füge das Makro in ein allgemeines Modul ein, Dann musst du das Makro aber von Hand starten (und ihm natürlich auch einen anderen Namen geben).

Die zweite Möglichkeit ist, dass du eine Abfrage einbaust:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim APP_OUTLOOK As Object
Dim MESSAGE As Object
Dim Rueckgabe

Rueckgabe = MsgBox("Soll die Mappe per Mail versendet, gespeichert und geschlossen werden?", 36, "Senden und schließen")

'Falls Nein ausgewählt wird, dann Speichern und Makro verlassen
If Rueckgabe = vbNo Then
ThisWorkbook.Saved = True
Exit Sub
End If

Set APP_OUTLOOK = CreateObject("Outlook.Application")
Set MESSAGE = APP_OUTLOOK.CreateItem(0)

With MESSAGE
.to = "xxxxx"
.Subject = "xxxx"
.HTMLbody = "xxxx-" & _
" <a href=""xxxx> "
.Display
End With

Set APP_OUTLOOK = Nothing
Set MESSAGE = Nothing

ThisWorkbook.Close (True)

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von
Wunderbar M.O.

Läuft super!!!
Ich bedanke mich :)

Viele Grüße

Excel-Ossi :)
...