Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1560to1564
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro pausieren

Makro pausieren
01.06.2017 10:31:43
Oisse
Hallo Zusammen,
ich übertrage Daten aus einer Excelliste in eine andere neue Mappe. Das funktioniert auch einwandfrei.
Nun möchte ich diese Mappe unter einem anderen Namen abspeichern. Auch das funktioniert einwandfrei.
Diese abgespeicherte Mappe soll nun als E-Mail verschickt werden. Auch das klappt.
Nun zu meinem Problem.
Vor dem speichern, bzw. bevor die E-Mail erzeugt wird, möchte ich gerne, dass man an den Daten noch was korrigieren oder löschen kann.
Wenn das erledigt ist, soll die Liste beim speichern gesperrt werden (das funktioniert auch bereits).
Wie unterbreche ich also das Makro, sodass man vor dem Speichern noch Daten ändern kann?
Gruß Oisse

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro pausieren
01.06.2017 10:44:34
yummi
Hallo Oisse,
zb: if msgBox("Soll noch was geändert werden?", vbYesNo) = vbNo then
dein Code
end if
Nach Änderung einfach dein Makro nochmal starten
Gruß
yummi
AW: Makro pausieren
01.06.2017 11:05:08
Oisse
Hallo yummi,
und danke für deine Antwort.
Vielleicht habe ich auch noch Wichtiges vergessen. Wenn ich das Makro ablaufen lasse, wird die neue Mappe mit den Daten erzeugt und abgespeichert und sofort auch die E-Mail erzeugt mit der Mappe als Anhang. D.h. ich sehe die neu erzeugte Mappe gar nicht, wenn ich das Makro komplett durchlaufen lasse.
Hier mal der Code bis zum Erstellen der E-Mail, vielleicht wird´s dann deutlicher:

Dim strPfad As String
Dim Datum As Date
Dim strAdress As String
Dim Text As String
Dim Aufseher As String
Dim eMailMA As String
Dim wks_Ang As Worksheet
Dim wks_Ein As Worksheet
Set wks_Ang = ThisWorkbook.Worksheets("Newsletter")
Set wks_Ein = Workbooks("Artikelliste.xlsm").Worksheets("Einstellungen")
Text = "Sie interessieren sich für unsere Artikel? Kontaktieren sie uns telefonisch oder in  _
Antwort auf die E-mail um einen Termin zu vereinbaren um zu einem beiderseits verbindlichen Angebot zu kommen. Dieses Angebot ist gültig, so lange der Vorrat reicht."
Datum = Date
Abteilung = wks_Ein.Cells(2, 12)
eMailMA = wks_Ang.Cells(13, 6)
Call ExcelAngebotsliste.Angebotsliste_Click
'Die zwei Zellen, aus denen sich die Angebotsnummer zusammensetzt (Jahreszahl und fortlaufende  _
Nummer)
Ang = wks_Ang.Cells(16, 9)
'Die Speicheradresse und der Speichername mit Käufer, Angebotsnummer
CDateiName = ThisWorkbook.Path & "\Angebote\" & "  Angebotsnr. " & Ang & ".xlsx"
If MsgBox("Überprüfe bitte die Datei und ändere sie ggf.", vbYesNo, "Prüfen") = vbNo Then
ActiveWorkbook.SaveAs Filename:=(CDateiName)
Application.DisplayAlerts = False

Wie also schaffe ich es, dass mir die neue Mappe angezeigt wird, ich die Korrekturen vornehmen kann und wenn das erledigt ist, das Makro bis zum erstellen der E-Mail weiterläuft?
Gruß Oisse
Anzeige
AW: Makro pausieren
01.06.2017 11:19:20
yummi
Hallo Oisse,
so wie ich das sehe ist doch hier ActiveWorkbook.SaveAs Filename:=(CDateiName) die "neue Datei" oder?
Dann wäre sie aber aktiv, wen ndu also an dieser stelle das saveas weg lässt müsstest du doch die datei sehen.
Idee: nimm den save und senden teil hier raus und pack ihn in ein Worksheet_change, wenn sich also in der von dir definierten Zelle der Wert auf Änderungen abgeschlossen gesetzt wird rufst du save und senden auf. Vlt hilft dir die Idee weiter
Gruß
yummi
AW: Makro pausieren
01.06.2017 11:19:33
dirk
Hallo!
Das kann etwas aufwändiger sein. Du könntest nach der positiven Bestätigung der MsgBox eine while wend Schleife einbauen. Die MSGBOX versorgt eine Variable mit z.B dem Wert 'Änderung' und diesen Wert überprüfst Du in der while-wend Schleife.
Zwingend ist dann aber, das Du nach Einbringen aller Änderungen den Wert der Variablen änderst in z.B. 'Geändert'. Das kann erreicht werden, indem das Abspeichern zwingend erforderlich ist, und mit workbook_aftersave event kann dann die Variable geändert werden.
Damit wird dann die While-Wend Schleife verlassen und das Macro läuft weiter.
Gruss
Dirk aus Dubai
Anzeige
AW: Makro pausieren -> 2. Teil in Userform
01.06.2017 11:28:16
Daniel
Hi
lagere den Teil des Makros, der nach der Pause ausgeführt werden soll, in eine Userform aus und führe ihn dort nach Klick auf einen Button aus.
das erste Makro endet dann mit der Aktivierung der zu ändernden Datei und dem Start der Userform.
Die Userform muss die Eigenschaft "ShowModal = False" haben oder mit Userform1.Show False gestartet werden.
Gruß Daniel
AW: Makro pausieren
01.06.2017 12:41:40
Oisse
Vielen herzlichen Dank, dass ihr mir so mit Rat und Tat zur Seite steht.
Ich habe jetzt einen anderen Weg gewählt und der funktioniert nun auch.
Ich speichere die neue Mappe unter dem Namen ab und erstelle zugleich einen neuen Button (alles noch in dem gleichen Makro).
Die Mappe öffnet sich mit dem erstellten Button und ich kann die Mappe beliebig bearbeiten.
Sobald ich fertig bin, drücke ich den Button und das "E-Mail senden" wird gestartet, das Excelsheet gesichert, der Button wieder gelöscht und die Mappe geschlossen.
Vielleicht nicht gerade die eleganteste Lösung, aber es ist eine Lösung.
Danke nochmals
Gruß Oisse
Anzeige
AW: Makro pausieren
01.06.2017 13:00:27
Daniel
das ist doch superelegant.
vor allem erlaubt dir diese Methode, dass du die Überarbeitung in mehren Schritten mit Zwischenspeichern machen kannst und nicht sofort das EMail erstellen musst.
Gruß Daniel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige