Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1580to1584
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 bricht unerwartet ab

Makro bricht unerwartet ab
20.09.2017 10:46:05
ZD14
Hallo Liebe Community,
ich bin wieder über ein sehr spezielles Problem in meinem Code gestoßen!
Folgendes Wunschprogramm:
1. Das Makro wird gestartet
2. UserForm öffnet sich --> Excel-Datei aus Liste auswählen
3. gewählte Datei öffnet sich
4. UserForm öffnet sich --> Arbeitsblatt von der vorhin gewählten Datei aus Liste auswählen
5. Im gewählten Arbeitsblatt wird ein bestimmter Bereich kopiert
6. PowerPoint wird geöffnet und eine Vorlage geladen
7. Zwischenablage wird eingefügt
8. gewählte Datei wird geschlossen
9. aus erster Datei wird ein bestimmerter Bereich kopiert und im PowerPoint eingefügt
ENDE
Bis Punkt 8 läuft alles spitze durch! Nach dem Schließen der zweiten Excel-Datei passiert aber gar nichts mehr! GAR nichts!
Ich habe ein On Error GoTo eingebaut, dieses wird aber nicht aufgerufen.
Ich habe MsgBoxen eingefügt, diese werden allerdings ab dem Schließen der gewählten Datei nicht mehr angezeigt.
Ich bin den Code mit F8 durchgegangen. Dabei macht sich der Code ab dem Öffnen von PowerPoint selbständig (die Befehle werden trotz F8 schnell abgearbeitet) und bricht dann nach dem Schließen wieder ab.
Hier noch der entscheidende Teil des Codes:

ActiveWorkbook.Sheets(str_sheet).Range("C4:AJ38").Copy 'die gewählte Datei ist aktiv!
'BIS HIER HIN WIRKT F8
'create presentation
Set oPPT = CreateObject("Powerpoint.Application") 'Dim oPPT as Object geschieht früher
With oPPT
.Visible = True
.Presentations.Open Filename:="L:\XXXX\Templates\Master_CW.pptx"
End With
oPPT.WindowState = ppWindowMinimized
'insert data from second file
int_j = 2
PowerpointGateExportHelp int_j 'Fügt die Zwischenablage in der PowerPoint ein
Application.DisplayAlerts = False
ActiveWorkbook.Close 'BIS HIER HIN LÄUFTS DURCH
Application.DisplayAlerts = True
'insert data from first file
BCM.Activate 'BCM as Workbook --> vorher auf ursprünglich geöffnete Datei gesetzt
BCM.Sheets("PM-DB").Range("C15:X55").Copy

Hat irgendwer eine Idee was ich falsch mache? Ich verzweifle schon ein wenig ..
Vielen Dank!
LG ZD14

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

Betreff
Datum
Anwender
Anzeige
AW: Makro bricht unerwartet ab
20.09.2017 11:00:15
Daniel
Hi
ActiveWorkbook.Close ist gefährlich.
Besser wäre es, das zu schließende Workbook direkt anzugeben.
Ansonsten müsstest du prüfen, ob auch die richtige Datei aktiv ist, damit du nicht zufälligerweise die Datei schließt, die das laufende Marko enthält.
um das abzusichern, kannst du mal folgendes einbauen, dann hält der Code an, wenn die aktive Datei die mit dem Makro ist.
If ThisWorkbook.Name = AcitveWorkbook.Name then
Stop
Else
ActiveWorkbook.Close
End If

zum deinem Test-Problem:
ja das ist anscheinend ein Bug in VBA, dass nach bestimmten Befehlen (z.B. dem Öffnen einer Datei) der Einzelstepmodus verlassen wird und das Makro normal durchläuft.
Da hilft dann nur, nach so einem Befehl einen Haltepunkt zu setzen.
Gruß Daniel
Anzeige
AW: Makro bricht unerwartet ab
20.09.2017 11:23:14
ZD14
Hallo Daniel,
Danke für deine schnelle Rückmeldung! Der Tipp mit dem Haltepunkt beim Schließen hilft.
Jetzt weiß ich endlich was passiert:
Nachdem die zweite Datei geschlossen wird, springt der Code wieder in UserForm_QueryClose und damit auf ActiveWorkbook.Close. Dadurch kommt natürlich alles durcheinander. Ich habe jetzt UserForm_QueryClose auskommentiert, da ich es in diesem Fall nicht brauche (in anderen UserForms war es nötig und dann dachte ich, es kann in keiner schaden^^)
Vielen lieben Dank! :D

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = CloseMode  vbFormCode
cmd_CancelSheet_Click
End Sub
Private Sub cmd_CancelSheet_Click()
'Close form
Me.Hide
Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.DisplayAlerts = True
End

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige