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

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

  1. Выберите «Печать» в меню «Файл». Excel отображает диалоговое окно «Печать».

  2. В области «Что для печати» диалогового окна выберите параметр «Вся книга».

  3. Щелкните кнопку Свойства. 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.

Этот совет (3243) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и более поздних версий) здесь:

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