Drucken mit Excel

PrintArea, PrintOut, PrintPreview, PageSetup
Drucke alle Workbooks (incl. Sheets) eines Sub DruckeAlles()
Verzeichnisses Dim datei As String
 datei = Dir("E:\MeineDateien\*.xls") Pfad und Dateiendung.
 Application.EnableEvents = False Fehlermeldungen unterdrücken.
 While datei <> ""
   Workbooks.Open ("E:\MeineDateien\" & datei) Eine Datei nach der anderen öffnen.
   Workbooks(datei).PrintOut Drucke alle Sheets.
   Workbooks(datei).Close savechanges:=False Datei schließen.
   datei = Dir() Nächste Datei ermitteln.
 Wend
 Application.EnableEvents = True
  End Sub  
Druckbereich festlegen (aktive bis letzte Sub DruckbereichFestlegen()
verwendete Zelle)   Range(ActiveCell, ActiveCell.End(xlDown)).Select
  ActiveSheet.PageSetup.PrintArea = _
    ActiveCell.CurrentRegion.Address
  End Sub  
Seite drucken, in der sich der Cursor Dim zb%, sb%, i%, j%, y%, z%, intZ%, intS%
befindet (3 Routinen !) Dim eSeite As Boolean, aSeite As Boolean
Sub SeiteDruckenCursor()
 Application.ScreenUpdating = False
 ActiveSheet.PageSetup.PrintArea = ""
 y = 1: z = 1: i = 1: j = 1
 eSeite = False: aSeite = False
 Do While aSeite = False
  Call zeilen
 Loop
End Sub
Private Sub zeilen()
Dim blatt As Range, pruefen As Object
 Do While eSeite = False
  Call SUmbruch(i, j)
  Set blatt = Range(Cells(y, z), Cells(zb, sb))
  Set pruefen = Application.Intersect(Range(ActiveCell.Address), _
     Range(blatt.Address))
  If pruefen Is Nothing = False Then
   ActiveSheet.PageSetup.PrintArea = blatt.Address
   ActiveSheet.PrintOut
   End
  End If
  y = zb + 1
  i = i + 1
 Loop
 j = j + 1
 z = sb + 1
 i = 1: y = 1
 eSeite = False
End Sub
Sub SUmbruch(nBlatt, oBlatt)
Dim varPB, nSeite%
 varPB = ExecuteExcel4Macro("Index(Get.Document(64), " _
    & nBlatt & ")")
 If IsError(varPB) Then
  zb = Cells(Cells.Rows.Count, oBlatt).End(xlUp).Row
  eSeite = True
  Exit Sub
 End If
 zb = varPB - 1
 varPB = ExecuteExcel4Macro("Index(Get.Document(65), " _
    & oBlatt & ")")
 If IsError(varPB) Then
  aSeite = True
  sb = Cells(nBlatt, 256).End(xlToLeft).Column
  Exit Sub
 End If
sb = varPB - 1
  End Sub  
Umgekehrte Druckreihenfolge für ein Sub Drucke_Seite_200_Bis_1()
Worksheet Dim i%, seite%
 seite = ExecuteExcel4Macro("Get.Document(50)")
  For i = seite To 1 Step -1
   ActiveSheet.PrintOut From:=i, To:=i
  Next
  End Sub  
Umgekehrte Druckreihenfolge für ein Sub Drucke_Blatt_Z_Bis_A()
Workbook Dim i%
 For i = Sheets.Count To 1 Step -1
  Sheets(i).PrintOut
 Next i
  End Sub  
Umgekehrte Druckreihenfolge für Workbook Sub Drucke_Alles_Rueckwaerts()
und Worksheets Dim i%, x%, seite%
seite = ExecuteExcel4Macro("Get.Document(50)")
 For i = Sheets.Count To 1 Step -1
  For x = seite To 1 Step -1
   Sheets(i).PrintOut From:=x, To:=x
  Next x
 Next i
  End Sub  
Zuerst Vorder-, dann Rückseitendruck Sub DruckeVorderRueck()
Dim i%, n%, nBlatt%, aZeile%, bZeile%, varPB
Application.ScreenUpdating = False
bZeile = Cells.Find("*", [a1], , , xlByRows, xlPrevious).Row
nBlatt = 1: aZeile = 1
 For n = 1 To 2
  For i = 1 To ExecuteExcel4Macro("GET.DOCUMENT(50)")
  varPB = ExecuteExcel4Macro("INDEX(GET.DOCUMENT(64)," _
    & nBlatt & ") ")
    If IsError(varPB) Then varPB = bZeile + 1
      If n = 1 And nBlatt Mod 2 <> 0 Or _
         n = 2 And nBlatt Mod 2 = 0 Then
        Range(Cells(aZeile, "A"), Cells(varPB - 1, "E")).PrintPreview
      End If
    nBlatt = nBlatt + 1
    aZeile = varPB
  Next i
  nBlatt = 1: aZeile = 1
   If n = 1 Then MsgBox "Bitte Blätter einlegen."
 Next n
[a1].Select
  End Sub  
Nur ausgewählte Dateien eines Sub Drucke_Auswahl_von_Dateien_eines_Verzeichnisses()
Verzeichnisses drucken Dim dateien, d
  dateien = Application.GetOpenFilename(FileFilter:= _
    "Microsoft Excel-Dateien (*.xls), *.xls", Title:="Alle _
    auszudruckenden Dateien markieren", MultiSelect:=True)
If IsArray(dateien) = False Then
  If dateien = False Then Exit Sub
End If
For d = 1 To UBound(dateien)
  Workbooks.Open Filename:=dateien(d)
  ActiveWorkbook.PrintOut
  ActiveWorkbook.Close SaveChanges:=False
Next
  End Sub  
Kopfzeile abwechselnd links oder rechts Sub KopfzeileAbwechselndLinksOderRechtsDrucken()
drucken Dim PageCount%, x%, y As Boolean
y = True
x = ExecuteExcel4Macro("Get.Document(50)")
 For PageCount = 1 To x
  If y = True Then
   With ActiveSheet.PageSetup
    .LeftHeader = "Name"
    .RightHeader = ""
   End With
  End If
  If y = False Then
   With ActiveSheet.PageSetup
    .LeftHeader = ""
    .RightHeader = "Text"
   End With
  End If
 ActiveWindow.SelectedSheets.PrintOut From:=PageCount, _
    To:=PageCount, Copies:=1
 y = Not y
 Next PageCount
  End Sub  
Erste Druckseite in neue Mappe kopieren Sub ErsteDruckseiteInNeueMappeKopieren()
Dim r As Range, IR%, IC%, CO%
 Application.ScreenUpdating = False
 IR = ExecuteExcel4Macro("Index(Get.Document(64),1)") - 1
 IC = ExecuteExcel4Macro("Index(Get.Document(65),1)") - 1
 Set r = Range(Cells(1, 1), Cells(IR, IC))
 Workbooks.Add
 r.Copy Range("a1")
 For CO = 1 To r.Columns.Count
  Columns(CO).ColumnWidth = r.Columns.ColumnWidth
 Next CO
 For CO = 1 To r.Rows.Count
  Rows(CO).RowHeight = r.Rows.RowHeight
 Next CO
  End Sub  
Druckt ausgewählte Dateien; Mehrfach- Sub Drucken2(arr) Drei Routinen kommen in ein Modul.
Auswahl über ListBox Application.ScreenUpdating = False
On Error GoTo end3
Dim i%
 For i = UBound(arr) To 1 Step -1
  Workbooks(arr(i)).Activate
  Call print_out
 Next i
Workbooks(mk).Activate
end3: Exit Sub
End Sub
Sub print_out()
 For i2 = Sheets.Count To 1 Step -1
  Sheets(i2).PrintOut
 Next i2
End Sub
Sub Start()
 frmDrucken.Show Laden des Formulars.
End Sub
Sub cmdFileprint_Click() Drei Routinen kommen ins Formular.
Dim arrWks(), i%, i2%
 For i = 0 To lstDrucken.ListCount - 1 Druck starten.
  If lstDrucken.Selected(i) Then
   i2 = i2 + 1
   ReDim Preserve arrWks(1 To i2)
   arrWks(i2) = lstDrucken.List(i)
  End If
 Next i
Unload Me
 Call Drucken2(arrWks)
End Sub
Sub UserForm_Initialize() Laden der ListBox (Nur Dateien, die
Dim wb As Workbook sich im aktuellen Verzeichnis dieses
lstDrucken.Clear Programms befinden !
 For Each wb In Workbooks
  lstDrucken.AddItem wb.Name
 Next wb
End Sub
Sub cmdAbbrechen_Click() Entladen des Formulars.
 Unload Me
End Sub
Sub Drucken_Click() Diese Routine wird aus dem Excel-
 frmDrucken.Caption = "Druckmenü" Worksheet aufgerufen, auf dem sich
 Application.Run mk + "!Start" ein Drucken-Startbutton befindet.
  End Sub  
Anzahl der Druckseiten ermitteln Sub SeitenzahlDerAktivenTabelleErmitteln()
Dim i As Integer
  i = ExecuteExcel4Macro("Get.Document(50)")
  MsgBox "Anzahl der Seiten = " & i
  End Sub  
Tabelle nur drucken, wenn Anzahl der Function SZ()
Druckseiten = 1 ist Dim i As Integer
  i = ExecuteExcel4Macro("Get.Document(50)")
  SZ = i
End Function
Sub Abfrage()
  If SZ = 1 Then
    ActiveWindow.SelectedSheets.PrintOut
  Else
      MsgBox "Zuviele Druckseiten!"
      Exit Sub
  End If
  End Sub  
Alle Druckseiten einer Arbeitsmappe zählen Sub SeitenzahlErmitteln()
Dim i As Integer
Dim Blatt As Worksheet
  i = 0
  For Each Blatt In ActiveWorkbook.Sheets
    Blatt.Activate
    Seiten = ExecuteExcel4Macro("Get.Document(50)")
    i = i + Seiten
  Next Blatt
  MsgBox "Anzahl der Seiten = " & i
  End Sub  
Nur letzte Seite eines Worksheets drucken Sub PrintLastSite()
Dim iSite As Integer
 iSite = ExecuteExcel4Macro("INDEX(GET.DOCUMENT(50),1)")
ActiveSheet.PrintOut from:=iSite, to:=iSite
  End Sub  
Druckt "Report" mit Kopfzeile Sub Printr()
  ActiveSheet.PageSetup.CenterHeader = _ Kopfzeile zentriert  (Arial fett kursiv)
    "&""Arial,Bold Italic""&14My Report" _ Kopfzeilentitel:  My Report
    & Chr(13) & Sheets(1).Range("A1") zweite Zeile: Inhalt der Zelle A1 von
  ActiveWindow.SelectedSheets.PrintOut Copies:=1 Blatt 1
  End Sub  
Hoch- oder Querformat kontrollieren Sub PrintRpt1()
  Sheets(1).PageSetup.Orientation = xlLandscape xlLandscape  = horizontal
  Range("Report").PrintOut Copies:=1 xlPortrait = vertikal
  End Sub  
Verschiedene Bereiche in einem Durchgang Sub PrintRpt2()
drucken   Range("HVIII_3A2").PrintOut
  Range("BVIII_3").PrintOut
  Range("BVIII_4A").PrintOut
  Range("HVIII_4A2").PrintOut
  Range("BVIII_5A").PrintOut
  Range("BVIII_5B2").PrintOut
  Range("HVIII_5A2").PrintOut
  Range("HVIII_5B2").PrintOut
  End Sub  
Definierten Bereich drucken Sub PrintRpt3() 
  With ActiveSheet.PageSetup 
  .CenterHorizontally = True zentrierter Ausdruck
  .PrintArea = "$A$3:$C$15" Druckbereich
  .PrintTitleRows = ("$A$1:$A$2") Titel drucken aus Zellen A1 und A2
  .Orientation = xlPortrait vertikaler Ausdruck
  .FitToPagesWide = 1 Bereich vergrößert / verkleinert auf
  .FitToPagesTall = 1 A4 anpassen
  End With
  ActiveSheet.PrintOut
  End Sub  
Druckbereich bis zum ersten Nullwert Sub DruckBisNull()
festlegen Dim intRow%
intRow = 1
  Do Until Cells(intRow, 1) = 0
    intRow = intRow + 1
  Loop
Tabelle1.PageSetup.PrintArea = ActiveSheet.Name & "!" & _
  Range Cells(1, 1), Cells(intRow - 1, 11)).Address
ActiveSheet.PrintPreview
  End Sub  

 Ranking-Hits zurück Sitemap
Designed by www.wbrnet.info