Laufzeitfehler 1004

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Laufzeitfehler 1004
von: Falco
Geschrieben am: 08.10.2015 16:02:43

Tach zusammen ich nochmal,
ich bekomme nach "zusammenfügen" von mehreren Makros den Laufzeitfehler 1004.
Aber von vorn:
Es gibt Zellen die sind zum ausfüllen markiert:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Worksheets("S1 Deckblatt").Unprotect "FH"
Worksheets("S1 Deckblatt").Range("Ofenanlage").Interior.ColorIndex = 6
Worksheets("S1 Deckblatt").Range("Prüftag").Interior.ColorIndex = 6
Worksheets("S1 Deckblatt").Range("Techniker").Interior.ColorIndex = 6
Worksheets("S1 Deckblatt").Range("Betreuer").Interior.ColorIndex = 6
Worksheets("S1 Deckblatt").Protect "FH"
End Sub
wenn alles aus gefüllt ist dann kann man ein Button drücken der soll die Seite 1 speichern und alles ab Seite 2 als pdf drucken.
Button Modul:
Sub CommandButton1_Click()
Call GesamteMappeDrucken
Call AlsPDF
End Sub Makro GesamtMappeDrucken:
Sub GesamteMappeDrucken()
ActiveWorkbook.PrintOut from:=1, To:=1, Copies:=1, Collate:=True
End Sub Makro PDF:
Public Sub AlsPDF()
Sheets(Array("S1 Deckblatt", "S2 Geräte", "und noch mehr Seiten")).Copy
With ActiveWorkbook
     .ExportAsFixedFormat Type:=xltyppdf, Filename:="Z:\QM\Seite2-TUS.pdf", _
                          Quality:=xlQualityStandard, _
                          IncludeDocProperties:=False, IgnorePrintAreas:=False, _
                          from:=2, To:=20, _
                          OpenAfterPublish:=False
     .Close SaveChanges:=False
End With
End Sub
Bevor es irgendetwas drucken oder speichern soll, müssen die Markierungen weg.
Dies geschieht wie folgt:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Worksheets("S1 Deckblatt").Unprotect "FH"
Worksheets("S1 Deckblatt").Range("Ofenanlage").Interior.ColorIndex = xlNone
Worksheets("S1 Deckblatt").Range("Prüftag").Interior.ColorIndex = xlNone
Worksheets("S1 Deckblatt").Range("Techniker").Interior.ColorIndex = xlNone
Worksheets("S1 Deckblatt").Range("Betreuer").Interior.ColorIndex = xlNone
Worksheets("S1 Deckblatt").Protect "FH"
Worksheets("S2 Geräte").Unprotect "FH"
Worksheets("S2 Geräte").Range("Prüfgeräte").Interior.ColorIndex = xlNone
Worksheets("S2 Geräte").Range("Prüfsensoren").Interior.ColorIndex = xlNone
Worksheets("S2 Geräte").Protect "FH"
...
End Sub
Genau hier gibt er den Fehler aus und markiert die 2. Zeile:
Worksheets("S1 Deckblatt").Range("Ofenanlage").Interior.ColorIndex = xlNone
Woran liegt es? Ohne Entfernung der Markierung läuft es super per Button (speichern +drucken). Auch das manuelle "Speichern unter" funktioniert ohne Probleme mit Entfernen der Markierungen.
Danke im voraus. Wenn das zu beheben geht dann ist die Datei komplett fertig. Bei Antworten bitte etwas ausführlicher da ich es sonst nicht verstehen ;) am besten mit Bsp oder Korrektur
MfG und einen schönen Nachmittag
Falco

Bild

Betrifft: AW: Laufzeitfehler 1004
von: Falco
Geschrieben am: 09.10.2015 07:47:12
Nach mehrmaligen testen und rumexperimentieren weiss ich, dass der Fehler mit dem Button zutun hat der die beiden Makros aktiviert. der ganze speichern als pdf Teil kann hier ignoriert werden. Beim Test Button mit nur "call drucken..." kommt der Laufzeitfehler 1004 und springt in die bereits erwähnte 2. Zeile des Before Print zum "Farbe wechseln"

Bild

Betrifft: AW: Laufzeitfehler 1004
von: Falco
Geschrieben am: 09.10.2015 09:46:41
Vergesst mich bitte nicht :(

Bild

Betrifft: AW: Laufzeitfehler 1004
von: fcs
Geschrieben am: 12.10.2015 20:41:55
Hallo Falco,
es gibt wohl ein Problem, den Blattschutz innerhalb des Workbook_BeforePrint-Ereignismakros aufzuheben.
Denn das Blatt ist geschützt, wenn der Befehl zu Zellformatierung ausgeführt werden soll.
Lagere die Befehle zur Zellformatierung in ein "normales" Makro aus und rufe dieses Makro vor dem Drucken auf. Außerdem sollte man hier die weiteren Ereignismalros während der Makroausführung deaktivieren, damit es nicht zu unerwünschten Makroausführungen kommt.
Gruß
Franz

Sub CommandButton1_Click()
    Application.EnableEvents = False
    Call GesamteMappeDrucken
    Call AlsPDF
    Application.EnableEvents = True
End Sub
'Makro GesamtMappeDrucken:
Sub GesamteMappeDrucken()
    prcFarbenzuruecksetzen
    ActiveWorkbook.PrintOut from:=1, To:=1, Copies:=1, Collate:=True
End Sub
'Makro PDF:
Public Sub AlsPDF()
  Dim strName
  strName = "Z:\QM\Seite2-TUS.pdf"
'  strName = "C:\Users\Public\Test\Seite2-TUS.pdf"
  Sheets(Array("S1 Deckblatt", "S2 Geräte", "und noch mehr Seiten")).Copy
  
  With ActiveWorkbook
       .ExportAsFixedFormat Type:=xlTypePDF, Filename:=strName, _
                            Quality:=xlQualityStandard, _
                            IncludeDocProperties:=False, IgnorePrintAreas:=False, _
                            from:=2, To:=20, _
                            OpenAfterPublish:=False
       .Close SaveChanges:=False
  End With
End Sub
Public Sub prcFarbenzuruecksetzen()
  With Worksheets("S1 Deckblatt")
    .Unprotect "FH"
    .Range("Ofenanlage").Interior.colorindex = xlNone
    .Range("Prüftag").Interior.colorindex = xlNone
    .Range("Techniker").Interior.colorindex = xlNone
    .Range("Betreuer").Interior.colorindex = xlNone
    .Protect "FH"
  End With
  With Worksheets("S2 Geräte")
    .Unprotect "FH"
    .Range("Prüfgeräte").Interior.colorindex = xlNone
    .Range("Prüfsensoren").Interior.colorindex = xlNone
    .Protect "FH"
  End With
  
'  ...
  
End Sub


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Laufzeitfehler 1004"