Hallo Steffen
Du sprichst von einer
Beispieltabelle mit meinem angefangenen Makro, welches nicht läuft
Du hast aber eine xlsx-Tabelle ohne Makro hochgeladen. Kannst Du Dein angefangenes Makro hier zeigen – zur Befriedigung meiner Neugier!
Ich habe die beiden angehängten Makros geschrieben. Das grosse macht folgendes:
Es werden alle Zeilen ausgeblendet. Dann werden nacheinander die Zeilen mit der gleichen Vertragsnummer eingeblendet und gedruckt. – Wichtig ist:
Die Vertragsnummern müssen der Reihe nach in Spalte A aufgeführt sein – so wie Du es in der Spalte A Deiner hochgeladenen Tabelle gemacht hast. Sie sind also nicht „kunterbunt“ in der Spalte A aufgeführt.
Du hast Deine Tabelle gegliedert. Das Makro muss diese Gliederung aufheben. Es fragt, ob das ok ist oder nicht. – Die Datei sollte also vorher gespeichert sein!
Als Drucker habe ich zwei Varianten:
Die Erstellung von PDFs in einem Ordner, den Du eröffnen und im Makro ganz oben eintragen musst. Die einzelnen PDFs werden unter den jeweiligen Vertragsnummern gespeichert. – Jetzt ist als Ordner eingetragen: " C:\Kassen_PDF". Das musst Du anpassen.
Variante 2: Der Druck auf Deinen Standarddrucker.
Ganz oben im Makro musst Du das bestimmen: Drucker = 1 oder Drucker = 2
Nach jedem Druckvorgang habe ich eine Msgbox eingefügt für eine kurze Pause, damit der PC nicht durcheinander gerät vor lauter Druckaufträgen. Wahrscheinlich geht es auch ohne diese Pause.
Mit dem kleinen Makro werden alle Zeilen eingeblendet. Das kannst Du auch benutzen, wenn mal was daneben gehen sollte. Was ich natürlich nicht hoffe!
Alles Nötige sollte nun gesagt sein. Grüsse Niclaus
Sub AlleZeilenEinblenden()
Cells.EntireRow.Hidden = False
Range("A1").Select
End Sub
Sub test()
drucker = 1 ' AUSWAHL: 1 = PDF erstellen / 2 = Druck auf Standard-Drucker
PDFOrdner = "C:\Kassen_PDF"
mgb = MsgBox("Achtung: Die Gliederung wird entfernt!" & Chr(13) & _
"Weitermachen? Ja oder Nein", 20, Environ("UserName"))
If mgb = 7 Then Exit Sub
Selection.ClearOutline
lz = Cells(Rows.Count, 1).End(xlUp).Row
For j = 2 To lz - 1
Range(Rows(2), Rows(lz)).EntireRow.Hidden = True
For i = j To lz - 1
vnr1 = Cells(i, 1)
vnr2 = Cells(i + 1, 1)
If vnr1 <> vnr2 Then
Range(Rows(j), Rows(i)).EntireRow.Hidden = False
Exit For
End If
Next i
If drucker = 1 Then ' PDF ERSTELLEN
PDFName = vnr1
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
PDFOrdner & "\" & PDFName _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
End If
If drucker = 2 Then ' Druck auf Standard-Drucker
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
End If
MsgBox "Eine kurze Pause", 48, Environ("UserName")
j = i
Next j
Call AlleZeilenEinblenden
End Sub