2016-10-05 3 views
0

Ich habe eine Datei hat 4 Spalten (ABCD) mit dem "Manager" in Spalte A und die Mitarbeiterzahlen in Spalte B mit Beispielinformationen pro Mitarbeiter in C & D. Was ich möchte Zu tun ist, in der Lage zu sein, ein Druckmakro zu haben, das alle Angestellten unter jedem Manager auf einem PDF mit den Kopfteilen drucken würde, die oben wiederholt werden. Wenn also das Druckmakro angeklickt wird, fragt es: "Welcher Manager"? Dann würde es geklickt und dann würde es die PDF drucken.Excel Print Zeilen WHERE (Auswahlkriterien)

Ist das möglich? Ich habe nach Loops geforscht, und ich dachte mir, dass dies der richtige Weg wäre, aber ich kann mir nicht vorstellen, wie ich meine "Range" ersetzen kann. Es ist Beispielcode, den ich in einer anderen Datei mit statischen Bereichen verwende.

Jede Hilfe wird sehr geschätzt! Vielen Dank. P.S. Entschuldigung wegen der Formatierung des Codes, ich kann mich nicht an die Art und Weise, wie Stack Overflow es bearbeitet, gewöhnen.

Sub Dept_BGT_Print() 
Range("C14:R45").Select 
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
"John Dept BGT.pdf", Quality:=xlQualityStandard, _ 
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ 
True 
Range("C47:R59").Select 
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
"HR Dept BGT.pdf", Quality:=xlQualityStandard, _ 
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ 
True 
Range("C62:R126").Select 
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
"Marketing & Sales Dept BGT.pdf", Quality:=xlQualityStandard, _ 
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ 
True 
Range("C128:R207").Select 
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
"Skip Dept BGT.pdf", Quality:=xlQualityStandard, _ 
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ 
True 
Range("C209:R250").Select 
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
"Amy Dept BGT.pdf", Quality:=xlQualityStandard, _ 
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ 
True 

End Sub

Antwort

1

Wenn Sie beim Drucken von einem Manager zu einem Zeitpunkt interessiert ist, die beste Wahl wahrscheinlich mit einem Autofilter einfach zu gehen.

Sub Dept_BGT_Print() 
Dim Sel_Manager As String 
'Specify headers to be repeated at the top 
With ActiveSheet.PageSetup 
     .PrintTitleRows = "$1:$1" 
     .PrintTitleColumns = "" 
End With 

'Manager selection through simple Inputbox 
Sel_Manager = InputBox("Which manager?") 
'Insert autofilter for worksheet 
Cells.Select 
Selection.AutoFilter 
'Select manager defined in inputbox 
ActiveSheet.Range("A1", Range("D1").End(xlDown)).AutoFilter Field:=1, Criteria1:=Sel_Manager 
'Select range to be printed and specify manager in filename 
ActiveSheet.Range("A1", Range("D1").End(xlDown)).Select 
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
"Employees for manager " & manager & ".pdf", Quality:=xlQualityStandard, 
_IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True 

'remove autofilter 
    ActiveSheet.ShowAllData 
End Sub 
Verwandte Themen