2015-11-02 8 views
2

У меня есть отчет, который я пытаюсь напечатать с помощью скрипта VBA. Мне нужно распечатать отчет на одной странице (портрет) и сосредоточить его. У меня есть форматирование вниз, но диапазон вызывает у меня проблемы. Мне нужно установить диапазон печати, чтобы настроить число значений в именованном диапазоне. Сейчас он будет печатать именованный диапазон, но он не будет изменять размер или печатать расширенный или сокращенный диапазон, если бы были добавлены или удалены записи.Печать динамического именованного диапазона

Sub PrintFailureReport() 

Sheets("Failure Report").Activate 
Range("FailReportPrintArea").Select 
ActiveSheet.PageSetup.PrintArea = Selection.Range("FailReportPrintArea").Address 
Application.PrintCommunication = True 

With ActiveSheet.PageSetup 
     .LeftMargin = Application.InchesToPoints(0.25) 
     .RightMargin = Application.InchesToPoints(0.25) 
     .TopMargin = Application.InchesToPoints(0.25) 
     .BottomMargin = Application.InchesToPoints(0.25) 
'   .HeaderMargin = Application.InchesToPoints(0.3) 
'   .FooterMargin = Application.InchesToPoints(0.3) 
     .PrintGridlines = False 
     .CenterHorizontally = True 
     .CenterVertically = True 
     .Orientation = xlPortrait 
     .PaperSize = xlPaperLetter 
     .Zoom = False 
     .FitToPagesWide = 1 
     .FitToPagesTall = 1 
     .BlackAndWhite = True 
End With 

Range("FailReportPrintArea").PrintOut 

End Sub 
+0

Изменение размера именованного диапазона первой? – findwindow

+1

Измените столбцы на требуемые, это будет означать диапазон от A1 до последней строки в столбце «C», «Диапазон (ячейки (1,« A »), ячейки (строки.« Count »,« C »). End (xlUp)). Name = "FailReportPrintArea" – Davesexcel

ответ

0

Я думаю, что он должен делать с Application.PrintCommunication = False не добавляется, прежде чем установить адрес

Sub PrintFailureReport() 

Sheets("Failure Report").Activate 
Range("FailReportPrintArea").Select 
Application.PrintCommunication = False 
ActiveSheet.PageSetup.PrintArea = Selection.Range("FailReportPrintArea").Address 
Application.PrintCommunication = True 

With ActiveSheet.PageSetup 
     .LeftMargin = Application.InchesToPoints(0.25) 
     .RightMargin = Application.InchesToPoints(0.25) 
     .TopMargin = Application.InchesToPoints(0.25) 
     .BottomMargin = Application.InchesToPoints(0.25) 
'   .HeaderMargin = Application.InchesToPoints(0.3) 
'   .FooterMargin = Application.InchesToPoints(0.3) 
     .PrintGridlines = False 
     .CenterHorizontally = True 
     .CenterVertically = True 
     .Orientation = xlPortrait 
     .PaperSize = xlPaperLetter 
     .Zoom = False 
     .FitToPagesWide = 1 
     .FitToPagesTall = 1 
     .BlackAndWhite = True 
End With 

Range("FailReportPrintArea").PrintOut 

End Sub 
Смежные вопросы