2016-08-09 9 views
-1

ich den folgenden Code haben, der gut arbeitet:Wählen Sie Zellbereiche und dann drucken

Sheets("File1").Select 
Range("B2:J56").Select 
Selection.PrintOut Copies:=1, Collate:=True 

Aber ich mit den folgenden Formaten mehrere Bereiche und die Seiten sollten drucken müssen erfüllen:

  • jede Auswahl sollte ein A4-Papier passen
  • doppelseitig
  • Spalten auf einer Seite angepasst, so dass der Inhalt passt vollständig in die Seitenbreite
  • Druckqualität von 600 dpi
  • Rand zentriert (horizontal und vertikal)
  • Seiten sollten einen Header „Diese Daten wurden vor einem Jahr gesammelt“ umfassen

ohne Erfolg im Internet Nach dem Kampf, ich habe ein Makro aufgezeichnet, aber es gibt immer noch viele Fehler, wenn ich versuche, das Code-Snippet, speziell in der Zeit Ausführungsfehler # 1004 in Zeile ActiveSheet.PageSetup.PrintArea = "$B$2:$J$56;$L$2:$T$37;$V$2:$AH$37" und drucken Kommunikationsmethode fehlgeschlagen.

[EDIT]: Lösung unter

implementiert
Sub RECORDED_Macro_Print_test() 

    Application.ScreenUpdating = False 

     Sheets("File1").Select 
     Range("B2:J83,L2:T37,V2:AO92").Select 
     Range("V2").Activate 
     ActiveSheet.PageSetup.PrintArea = "$B$2:$J$83;$L$2:$T$37;$V$2:$AO$92" ' <----- Fix it by replacing ';' by ',' as suggested by the user 'Siva' 
     Application.PrintCommunication = False 
     With ActiveSheet.PageSetup 
      .PrintTitleRows = "" ' <----- Not necessary 
      .PrintTitleColumns = "" ' <----- Not necessary 
      .LeftHeader = ""  ' <----- Not necessary 
      .CenterHeader = "This data was collected a year ago" 
      .RightHeader = ""  ' <----- Not necessary 
      .LeftFooter = ""  ' <----- Not necessary 
      .CenterFooter = ""  ' <----- Not necessary 
      .RightFooter = ""  ' <----- Not necessary 
      .LeftMargin = Application.InchesToPoints(0.511811023622047) 
      .RightMargin = Application.InchesToPoints(0.511811023622047) 
      .TopMargin = Application.InchesToPoints(0.78740157480315) 
      .BottomMargin = Application.InchesToPoints(0.78740157480315) 
      .HeaderMargin = Application.InchesToPoints(0.31496062992126) 
      .FooterMargin = Application.InchesToPoints(0.31496062992126) 
      .PrintHeadings = False 
      .PrintGridlines = False 
      .PrintComments = xlPrintNoComments 
      .PrintQuality = 600 
      .CenterHorizontally = True 
      .CenterVertically = True 
      .Orientation = xlPortrait 
      .Draft = False 
      .PaperSize = xlPaperA4 
      .FirstPageNumber = xlAutomatic 
      .Order = xlDownThenOver 
      .BlackAndWhite = False 
      .Zoom = False 
      .FitToPagesWide = 1 
      .FitToPagesTall = False 
      .PrintErrors = xlPrintErrorsDisplayed 
      .OddAndEvenPagesHeaderFooter = False 
      .DifferentFirstPageHeaderFooter = False 
      .ScaleWithDocHeaderFooter = True 
      .AlignMarginsHeaderFooter = True 
       .EvenPage.LeftHeader.Text = "" ' <----- Not necessary 
       .EvenPage.CenterHeader.Text = "" ' <----- Not necessary 
       .EvenPage.RightHeader.Text = "" ' <----- Not necessary 
       .EvenPage.LeftFooter.Text = "" ' <----- Not necessary 
       .EvenPage.CenterFooter.Text = "" ' <----- Not necessary 
       .EvenPage.RightFooter.Text = "" ' <----- Not necessary 
       .FirstPage.LeftHeader.Text = "" ' <----- Not necessary 
       .FirstPage.CenterHeader.Text = "" ' <----- Not necessary 
       .FirstPage.RightHeader.Text = "" ' <----- Not necessary 
       .FirstPage.LeftFooter.Text = "" ' <----- Not necessary 
       .FirstPage.CenterFooter.Text = "" ' <----- Not necessary 
       .FirstPage.RightFooter.Text = "" ' <----- Not necessary 
     End With 
     Application.PrintCommunication = True ' <----- Remove this line to fix it. This is an error issue 
     Selection.PrintOut Copies:=1, Collate:=True 
    End Sub 

Um das Makro ich im Grunde die Bereiche alles, was ich durch Halten der Shift-Taste erforderlich ausgewählt haben aufzeichnen, dann definiert ich den Druckbereich, dann Druck gedrückt, hat alle Einschränkungen im Dialogfeld und voilà angegeben. Wie man es zur Arbeit bringt?

+0

OK ersetzen. Vier Stunden + schauen, um dieses Problem zu lösen, und ich bekomme eine -1? Wenn die Antwort so einfach zu sein scheint, informieren Sie bitte die Lösung. Ich wäre wirklich großartig. –

Antwort

1

Ersetzen Sie Ihre Codezeile

ActiveSheet.PageSetup.PrintArea = "$B$2:$J$56;$L$2:$T$37;$V$2:$AH$37" 

mit

ActiveSheet.PageSetup.PrintArea = "$B$2:$J$56,$L$2:$T$37,$V$2:$AH$37" 

ich es in meiner Maschine versucht haben, und diese Linie geben keinen Fehler nach

+0

Der Makrodatensatz zeichnet den tatsächlichen Status auf und enthält ihn nicht nur als Teil des endgültigen Codeausschnitts, sondern erhöht ihn auch mit Informationen, die Sie nicht mehr benötigen, wie zum Beispiel: Der vorherige Qualitätsdruck wurde ursprünglich auf 72 dpi eingestellt und ich musste manuell mehrere Zeilen löschen. Nachdem das Semikolon behoben und die '.PrintCommunication = True' gelöscht wurde, funktionierte es. Vielen Dank. –