ワークブックには、あらゆる種類のデータを含めることができます。多数のワークシートを含み、それぞれに少量のデータしか含まれていないワークブックがある場合、複数のワークシートを1枚の用紙に印刷する方法があるかどうか疑問に思うかもしれません。

この問題の解決策に取り組むには、いくつかの方法があります。 1つ目は、プリンタードライバーの機能を使用して、シートごとに複数のページを印刷することです。たとえば、古いHP LaserJetを使用していて、プリンタードライバーを使用すると、1枚の用紙に印刷するページ数を指定できます。 3つまたは4つの単一ページのワークシートをすべて1枚の用紙に印刷したい場合は、次の手順に従うだけです。

。 Ctrl + Pを押します。 Excelは、[印刷]ダイアログボックス(Excel 2007)または印刷オプション(Excel2010およびExcel2013)を表示します。

。 Excel 2007を使用している場合は、ダイアログボックスの[印刷する文字列]領域で[ブック全体]オプションを選択します。それ以降のバージョンのExcelを使用している場合は、[設定]見出しのすぐ下にあるドロップダウンリストを使用して、[ブック全体を印刷]を選択します。

。 [プロパティ]ボタン(Excel 2007)または[プリンタのプロパティ]リンク(最新バージョンのExcel)をクリックします。 Excelは、[レイアウト]タブが選択された状態で、プリンタの[プロパティ]ダイアログボックスを表示します。

。 Pages PerSheetコントロールを4に設定します。

。 [OK]をクリックして、[プロパティ]ダイアログボックスを閉じます。

。 [OK]をクリックして、実際にワークシートを印刷します。

お使いのプリンタは、ここで概説されているものと同様の機能を提供する場合がありますが、その機能を見つけるには、プリンタの[プロパティ]ダイアログボックスを調べてみる必要がある場合があります。もちろん、この方法で印刷すると、印刷出力に非常に小さなテキストが表示される可能性があります。これは、プリンタドライバが各ページを縮小して、印刷されたページの比例した領域を占めるようにするためです。空白の一部を減らして、印刷されるテキストのサイズを大きくしたい場合は、別の解決策を探す必要があります。

多くの人は、印刷物を統合するために、実際には、ワークブックの他のワークシートに印刷される領域への参照のみを含む「印刷ワークシート」を作成します。これらの参照は、各ワークシートのデータを参照する数式を使用するか、Excelのカメラツールを使用して行うことができます。 (カメラツールは_ExcelTips._の他の号で説明されています)

複数のワークシートを1つのワークシートに統合する自動化されたソリューションの場合、マクロを使用できます。次のマクロは、ワークブックの最後に新しいワークシートを作成し、他のすべてのワークシートからその内容をコピーします。

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_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(8315)は、Microsoft Excel 2007、2010、および2013に適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。