2015-07-21 3 views
0

Я хотел бы иметь возможность распечатывать все, что у меня есть, из столбцов A: H в ландшафтном режиме, и мне было интересно, знает ли кто, как это сделать, чтобы всякий раз, когда вы открываете этот конкретный документ и пытаетесь его распечатать , он будет автоматически распечатываться под этими конкретными настройками. Кроме того, мне хотелось бы только напечатать там, где на самом деле есть текст, и не печатать пробел (у меня есть уравнения, заполненные во всех ячейках A1: H50, но у меня на самом деле есть числа, заполненные RIGHT NOW (но это будет меняться со временем) на ячейках A1: H30, то есть A31: H50 на данный момент заполнены пустым символом пробела «»)Область печати Excel

Кроме того, в верхней строке моего документа есть заголовки, которые я хотел бы отображать для каждой страницы, которую я распечатываю , (т. е. заголовки акций, цена акций, цена акций 1 год назад, а затем эти столбцы заполнены 30 запасами). Я бы хотел, чтобы, если у меня есть 4 страницы (переменная) ценность информации, которая в конечном итоге печатается, то верхний ряд имени и цены запаса всегда печатается в верхней части каждой страницы.

Большое спасибо!

ответ

0

Вы можете использовать событие BeforePrint, чтобы сбросить область печати в соответствии с вашими требованиями каждый раз, когда пользователь пытается ее распечатать. Независимо от того, какие настройки пользователь пытается выбрать, он будет переопределяться с теми, которые вы указали в коде события. Попробуйте поместить этот код в ThisWorkbook модуля:

Private Sub Workbook_BeforePrint(Cancel As Boolean) 
    Application.PrintCommunication = False 
    With ThisWorkbook.Sheets("Sheet 1") 
     .AutoFilterMode = False 
     .Range("$A:$H").AutoFilter Field:=1, Criteria1:="<>", Operator:=xlFilterValues 'if column A (Field:=1) is blank then hide those rows before setting print range 
     With .PageSetup 
      .Orientation = xlLandscape 
      .PrintArea = "$A:$H" 
      .PrintTitleRows = "$1:$1" 'change to whichever row numbers you want to print on every page 
     End With 
    End With 
    Application.PrintCommunication = True 
End Sub 

Потенциал роста/спада, чтобы делать это таким образом, что бы она не позволяет пользователю печатать его в любом формате, отличном от указанного вами. Если вы не хотите ограничивать возможности пользователя печатать его в разных форматах, вы можете использовать один и тот же код внутри не-события Sub и запускать этот макрос, когда ему нужно распечатать его с помощью этих настроек.

+0

Большое вам спасибо, работает как шарм! – kash

0

Хорошо, вы задаете несколько разных вопросов, а некоторые из них легче ответить, чем другие.

Во-первых, вы хотите установить определенную область (A1: H50) для печати каждый раз, когда кто-то печатает страницу, и вы хотите, чтобы она печаталась в альбомной ориентации. Это просто - перейдите на ленту макета страницы, выберите область A1: H50 и нажмите «Область печати» -> «Установить область печати». Затем рядом с ним нажмите Ориентация -> Пейзаж.

Ваш третий вопрос, касающийся настройки заголовка, также прост. Снова перейдите к ленте макета страницы и нажмите «Печать плит». Вы можете либо щелкнуть вкладку «Лист» и сказать ей, чтобы повторить несколько строк вверху, либо вы можете нажать «Верхний колонтитул» или «Нижний колонтитул» и вручную ввести заголовки самостоятельно.

Ваш второй вопрос не имеет простого, автоматизированного подхода (который я знаю). Или согласитесь с тем, что пустое пространство будет включено в распечатку (это все равно, так как вы, вероятно, хотите, чтобы каждая страница была разнесена все равно, независимо от того, сколько строк заполнено) или вручную «Скрыть» пустые строки.

Возможны автоматические решения VBA, но я не рекомендую использовать автоматическое решение, которое вы не понимаете над чем-то настолько тривиальным, чтобы делать вручную.

Обратите внимание, что этот вопрос не подходит для этого сайта. Это вопрос, который лучше подходит для superuser.com, который является частью той же группы сайтов, s stackoverflow.com, но ориентирован на вопросы, не связанные с программированием о программном обеспечении - особенно Excel.

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