■ ワークシートを印刷しよう!2
前回に続き、印刷の設定を行うコードの解説を行います。
・用紙の余白を設定する
用紙の余白を設定することができます。TopMarginプロパティは、用紙の上余白を、BottomMarginプロパティは、用紙の下余白を、LeftMarginプロパティは、用紙の左余白を、RightMarginプロパティは、用紙の右余白を、それぞれ設定します。
[書式]
オブジェクト.TopMargin
オブジェクト.BottomMargin
オブジェクト.LeftMargin
オブジェクト.RightMargin
オブジェクト.TopMargin = 設定値
オブジェクト.BottomMargin = 設定値
オブジェクト.LeftMargin = 設定値
オブジェクト.RightMargin = 設定値
オブジェクトには、PageSetupオブジェクトを指定します。
設定値には、余白の大きさをポイント単位で指定します。
※用紙サイズを超える余白を設定すると、エラーが発生します。
※1ポイントは約0.0353cm、約1/72インチになります。
※ApplicationオブジェクトのCentimetersToPointsメソッド、InchesToPointsメソッドを使用すると、センチメートルの単位、インチの単位を、それぞれポイント単位に変換することができます。
例:
Sub Test()
With Worksheets("Sheet1")
.PageSetup.TopMargin = 30
.PageSetup.BottomMargin = 20
.PageSetup.LeftMargin = Application.CentimetersToPoints(1)
.PageSetup.RightMargin = Application.InchesToPoints(1)
.PrintPreview
End With
End Sub
この例では、Sheet1ワークシートの上余白を30ポイント、下余白を20ポイント、左余白を1センチメートル、右余白を1インチ、にそれぞれ設定し、印刷プレビュー表示します。 |
・ページの中央に印刷する
ページの中央に印刷するよう設定することができます。CenterHorizontallyプロパティは水平方向の中央に、CenterVerticallyプロパティは垂直方向の中央に、それぞれ印刷位置を設定します。
[書式]
オブジェクト.CenterHorizontally
オブジェクト.CenterVertically
オブジェクト.CenterHorizontally = 設定値
オブジェクト.CenterVertically = 設定値
オブジェクトには、PageSetupオブジェクトを指定します。
設定値には、TrueまたはFalseを設定します。Trueを設定すると印刷位置を中央に設定します。
※印刷される中央の位置は、上下左右の余白を除いた印刷領域の中央になります。したがって上下左右の余白が均等でない場合、ページの中央に正確に印刷されません。
例:
Sub Test()
With Worksheets("Sheet1")
.PageSetup.CenterHorizontally = True
.PageSetup.CenterVertically = True
.PrintPreview
End With
End Sub
この例では、Sheet1ワークシートのページを水平方向、垂直方向それぞれの余白を除いた中央に、印刷位置を設定し、印刷プレビュー表示します。 |
・ヘッダー・フッターを設定する
ヘッダー・フッターを設定することができます。LeftHeaderプロパティは左ヘッダーを、RightHeaderプロパティは右ヘッダーを、CenterHeaderプロパティは中央ヘッダーを、それぞれ設定します。
またLeftFooterプロパティは左フッターを、RightFooterプロパティは右フッターを、CenterFooterプロパティは中央フッターを、それぞれ設定します。
[書式]
オブジェクト.LeftHeader
オブジェクト.RightHeader
オブジェクト.CenterHeader
オブジェクト.LeftFooter
オブジェクト.RightFooter
オブジェクト.CenterFooter
オブジェクト.LeftHeader = 設定値
オブジェクト.RightHeader = 設定値
オブジェクト.CenterHeader = 設定値
オブジェクト.LeftFooter = 設定値
オブジェクト.RightFooter = 設定値
オブジェクト.CenterFooter = 設定値
オブジェクトには、PageSetupオブジェクトを指定します。
設定値には、ヘッダーまたはフッターに印刷したい文字列を、既定の書式コードで指定します。書式コードの主なものは次の通りです。
書式コード |
内容 |
&nn |
nnに数値を指定することで、指定したフォントサイズで文字列を印刷します |
&B |
文字列を太字にします |
&I |
文字列を斜体にします |
&L |
文字列を左詰めにします |
&C |
文字列を中央揃えにします |
&R |
文字列を右詰めにします |
&X |
上付き文字にします |
&Y |
下付き文字にします |
&U |
文字列に下線を付けます |
&E |
文字列に二重下線を付けます |
&S |
文字列に取消線を付けます |
&D |
現在の日付を印刷します |
&T |
現在の時刻を印刷します |
&F |
ファイル名を印刷します |
&A |
シート名を印刷します |
&P |
ページ番号を印刷します |
&N |
すべてのページ数を印刷します |
&P+<数値> |
ページ番号に指定した<数値>を加えた値を表示します |
&P-<数値> |
ページ番号から指定した<数値>を引いた値を表示します |
& "フォント名" |
指定したフォントで文字列を印刷します |
&& |
アンパサンド(&)を印刷します |
例:
Sub Test()
With Worksheets("Sheet1")
.PageSetup.LeftHeader = "&B&14SampleList"
.PageSetup.RightHeader = "&U&D"
.PageSetup.CenterHeader = Range("A1").Value
.PageSetup.LeftFooter = "&A"
.PageSetup.RightFooter = "&""Verdana""Author"
.PageSetup.CenterFooter = "&P/&N"
.PrintPreview
End With
End Sub
この例では、左ヘッダーに太字かつフォントサイズ14で"SampleList"の文字列を、右ヘッダーに下線付きで現在の日付を、中央ヘッダーにA1セルの内容を、
左フッターにシート名を、右フッターにVerdanaのフォントで"Author"の文字列を、中央フッターに"ページ番号/総ページ数"を、それぞれ設定し、印刷プレビュー表示します。 |
■ワークシートの印刷を行う
・印刷を実行する
印刷を実行するには、PrintOutメソッドを使用します。印刷を開始するページや終了するページ、印刷部数、印刷を行うプリンタ名などを指定することができます。
[書式]
オブジェクト.PrintOut(開始ページ,終了ページ,印刷部数,プレビューの有無,プリンタ名,ファイルに出力,部単位での印刷,出力先ファイル名)
オブジェクトには、Windowオブジェクト、Workbookオブジェクト、Worksheetオブジェクト、Chartオブジェクトを指定します。またSheetsコレクション、Worksheetsコレクション、Chartsコレクション、Rangeコレクションを指定することもできます。
開始ページ、終了ページには、印刷を開始するページ番号、終了するページ番号をそれぞれ指定します。開始ページを省略すると最初のページから、終了ページを省略すると最後のページまで、それぞれ印刷します。
印刷部数には、印刷する部数を数値で指定します。省略すると1が指定されます。
プレビューの有無には、TrueまたはFalseを指定します。Trueを指定すると印刷プレビュー表示をします。省略するとFalseが指定されます。
プリンタ名には、印刷を行うプリンタ名を指定します。省略することもできます。
ファイルに出力には、TrueまたはFalseを指定します。Trueを指定した場合、引数"出力先ファイル名"に出力先のファイル名を指定します。
部単位での印刷には、TrueまたはFalseを指定します。Trueを指定すると部単位で印刷を行います。
出力先ファイル名には、出力先のファイル名を指定します。引数"ファイルに出力"をTrueに指定する必要があります。省略すると、ファイルを選択するダイアログボックスが表示されます。
※対象となるオブジェクトがセル範囲の場合、選択されているセル範囲のみが印刷されます。複数のセル範囲が選択されている場合、セル範囲ごとに複数のページに印刷されます。
例:
Worksheets("Sheet1").PrintOut 2, 3, 4, False, "Printer A"
この例では、Sheet1ワークシートの、2ページ目から3ページ目を4部、"Printer A"のプリンタで印刷します。 |
※アクティブプリンタの名前を調べるには、ApplicationオブジェクトのActivePrinterプロパティを使用します。例えば、
Debug.Print Application.ActivePrinter
この場合、イミディエイトウィンドウにアクティブプリンタのプリンタ名が出力されます。アクティブプリンタとは、[コントロールパネル]の[プリンタとFAX]の中に表示されるプリンタのうち、"通常使うプリンタ"として設定されているチェックの付いたプリンタを指します。
PrintOutメソッドの引数"プリンタ名"を使用しなくても、次のようにすることでアクティブプリンタを変更して印刷することができます。
例:
Sub Test()
Application.ActivePrinter = "Printer A on LPT1:"
Worksheets("Sheet1").PrintOut
End Sub
この例では、2行目でアクティブプリンタを"Printer A on LPT1:"に変更しています。("on LPT1"はLPT1ポートを指します。ActivePrinterプロパティでは"プリンタ名 on ポート名:"と記述する必要があります)その後、Sheet1ワークシートを印刷し終了します。 |
アクティブプリンタを変更したのち、元のアクティブプリンタに戻したいときは次のようにします。
例:
Sub Test()
Dim MyPrinter As String
MyPrinter = Application.ActivePrinter
Application.ActivePrinter = "Printer A on LPT1:"
Worksheets("Sheet1").PrintOut
Application.ActivePrinter = MyPrinter
End Sub
この例では、変数MyPrinterにアクティブプリンタの情報を格納、アクティブプリンタを変更して印刷したのちに最初に設定されていたアクティブプリンタ(変数MyPrinterの中身)に戻します。 |
以上で、ワークシートを印刷するコードの解説を終わります。
Excelのワークシートは大変優れた帳票作成ツールになります。今回解説したコードを利用することで、さらに便利にワークシートの印刷を行うことが可能でしょう。
ぜひ、マスターしてください。
|