Hallo zusammen
Ich hab da ein Problem mit einer BeforePrint-Prozedur. Ich konnte den Fehler auf eine Zeile eingrenzen, verstehe aber nicht was das Problem ist. Der gesamte Code rechnet eigentlich durch bis er zum vorletzten Befehl "Printout" kommt. Die Zeile(n) oberhalb werden noch ausgeführt. "PrintOut" jedoch nicht, dafür springt man wieder zum Anfang und der Code wird von neuem Ausgeführt. Dabei wird jedoch auch wieder ein Befehl (Application.Dialogs(xlDialogSaveAs).Show) nicht ausgeführt und man hängt in einer Endlosschlaufe fest.
Weiter ist es so, dass bei den Kollegen das Excel abstürzt bei der "Quit"-Anweisung. Bei mir jedoch nicht, obwohl wir alle mit den gleichen Servern, Officeversionen, etc. arbeiten.
Ich habe hier mal den Code (ziemlich gekürzt auf die entsprechenden Fehler):
Option Explicit
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim wb As Workbook
Dim ws As Worksheet
Dim clipboard As MSForms.DataObject
Dim fPath As String
Dim fName As String
Dim fName2 As String
Dim fDatei As String
Dim i As Long
Set ws = Worksheets("Lohnblatt")
Set wb = ThisWorkbook
Set clipboard = New MSForms.DataObject
fPath = "\\Pfad für die Kopie\"
fName = Format(Date, "YYYY-MM-DD") & "-" & ActiveWorkbook.name
fName2 = ActiveWorkbook.name
fDatei = fPath & fName
Application.EnableEvents = False
Application.ScreenUpdating = False
If ActiveSheet.name = "Lohnblatt" Then
'Drucken abbrechen
Cancel = True
End If
If wb.Saved = True Then GoTo Save1 Else GoTo Not_Save1
'Wenn das Dokument bereits gespeichert ist, wird diese Bedingung übersprungen
Not_Save1:
With ws
If wb.Saved = False Then _
'Messagebox Meldung in zwei Sprachen
If wb.Saved = False Then Application.Dialogs(xlDialogSaveAs).Show (fName2), xlOpenXMLWorkbookMacroEnabled
If wb.Saved = False Then GoTo Not_Save2 Else GoTo Save1
End With
Not_Save2:
With ws
'Messagebox Meldung in zwei Sprachen
If wb.Saved = False Then GoTo Not_Save1 Else GoTo Save1
End With
Save1:
'Ein paar Spalten werden mit einem For/Next Befehl ausgeblendet.
'Danach werden einige Daten in ein anderes Tabellenblatt geschrieben
Save2:
With ws
'Hinweis, dass eine Kopie gespeichert werden muss
'Messagebox Meldung in zwei Sprachen
clipboard.SetText fPath
clipboard.PutInClipboard
'Dieser Befehl wir beim (fehlerhaften) zweiten Durchlauf übersprungen
Application.Dialogs(xlDialogSaveAs).Show (fName), xlOpenXMLWorkbookMacroEnabled
'hier geht es dann weiter
If wb.Saved = False Then _
If ws.Range("B5") = "Deutsch" _
'Messagebox Meldung in zwei Sprachen
'Da das "speichern unter"-Fenster nicht ausgeführt wird hängt man hier dann fest.
If wb.Saved = False Then GoTo Save2 Else GoTo Save3
End With
Save3:
Application.EnableEvents = True
Application.ScreenUpdating = True
'Hinweis, dass das Dokument nun geschlossen wird. (Soll verhindern, dass in der Kopie weitergearbeitet wird)
'Messagebox Meldung in zwei Sprachen
'alles oberhalb wird ausgeführt. Der nachstehende Befehl wird nicht ausgeführt und man Beginnt wieder zu oberst
ws.PrintOut
MsgBox "printout wird ausgeführt"
'Bei mir stürzt das Programm nicht ab. Bei den Kollegen jedoch schon. Eine Idee weshalb?
'Application.Quit
'Das war die alternative, die auch bei mir zum Absturz führte
'wb.Close
End Sub
|