Книги могут содержать все виды данных. Если у вас есть рабочая книга, которая включает в себя несколько листов, каждый из которых содержит лишь небольшой объем данных, вы можете задаться вопросом, есть ли способ распечатать несколько листов на одном листе бумаги.

Есть несколько способов решения этой проблемы. Первый — просто распечатать несколько страниц на листе, используя возможности драйвера вашего принтера. Например, у меня есть более старый HP LaserJet, и драйвер принтера позволяет мне указать количество страниц для печати на листе бумаги. Если я хотел напечатать три или четыре одностраничных рабочих листа на одном листе бумаги, все, что мне нужно было сделать, это выполнить следующие действия:

  1. Нажмите Ctrl + P. Excel отображает диалоговое окно «Печать» (Excel 2007) или параметры печати (Excel 2010 и Excel 2013).

  2. Если вы используете Excel 2007, выберите параметр «Вся книга» в области «Что для печати» диалогового окна. Если вы используете более позднюю версию Excel, используйте раскрывающийся список непосредственно под заголовком «Параметры», чтобы выбрать «Печатать всю книгу».

  3. Нажмите кнопку «Свойства» (Excel 2007) или ссылку «Свойства принтера» (более поздние версии Excel). Excel отображает диалоговое окно «Свойства» для принтера с выбранной вкладкой «Макет».

  4. Установите для элемента управления Pages Per Sheet значение 4.

  5. Щелкните ОК, чтобы закрыть диалоговое окно Свойства.

  6. Нажмите OK, чтобы распечатать рабочие листы.

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

Многие люди, чтобы объединить напечатанное, фактически создают «рабочий лист для печати», который не содержит ничего, кроме ссылок на области, которые должны быть напечатаны на других листах в книге. Эти ссылки можно сделать либо с помощью формул, относящихся к данным на каждом листе, либо с помощью инструмента камеры в Excel. (Инструмент камеры описан в других выпусках ExcelTips.)

Для автоматизированного решения объединения нескольких рабочих листов в один рабочий лист вы можете использовать макрос. Следующий макрос создаст новый лист в конце вашей книги и скопирует в него содержимое со всех остальных листов.

Sub PrintOnePage()

Dim wshTemp As Worksheet, wsh As Worksheet  Dim rngArr() As Range, c As Range  Dim i As Integer  Dim j As Integer

ReDim rngArr(1 To 1)

For Each wsh In ActiveWorkbook.Worksheets  i = i + 1  If i > 1 Then ' resize array   ReDim Preserve rngArr(1 To i)

End If

On Error Resume Next  Set c = wsh.Cells.SpecialCells(xlCellTypeLastCell)

If Err = 0 Then   On Error GoTo 0

'Prevent empty rows   Do While Application.CountA(c.EntireRow) = 0 _   And c.EntireRow.Row > 1   Set c = c.Offset(-1, 0)

Loop

Set rngArr(i) = wsh.Range(wsh.Range("A1"), c)

End If  Next wsh

'Add temp.Worksheet  Set wshTemp = Sheets.Add(after:=Worksheets(Worksheets.Count))



On Error Resume Next  With wshTemp  For i = 1 To UBound(rngArr)

If i = 1 Then   Set c = .Range("A1")

Else   Set c = _    ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell)

Set c = c.Offset(2, 0).End(xlToLeft) 'Skip one row   End If

'Copy-paste range (prevent empty range)

If Application.CountA(rngArr(i)) > 0 Then   rngArr(i).Copy c   End If  Next i  End With  On Error GoTo 0

Application.CutCopyMode = False ' prevent marquies

With ActiveSheet.PageSetup 'Fit to 1 page  .Zoom = False  .FitToPagesWide = 1  .FitToPagesTall = 1  End With

'Preview New Sheet  ActiveWindow.SelectedSheets.PrintPreview

'Print Desired Number of Copies  i = InputBox("Print how many copies?", "ExcelTips", 1)

If IsNumeric(i) Then  If i > 0 Then   ActiveSheet.PrintOut Copies:=i  End If  End If

'Delete temp.Worksheet?

If MsgBox("Delete the temporary worksheet?", _  vbYesNo, "ExcelTips") = vbYes Then  Application.DisplayAlerts = False  wshTemp.Delete  Application.DisplayAlerts = True  End If End Sub

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

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (8315) применим к Microsoft Excel 2007, 2010 и 2013. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Printing_Multiple_Worksheets_on_a_Single_Page [Печать нескольких рабочих листов на одной странице].