Excelノート 9-1 印刷

HOME  検索  索引  もくじ  関数目次ージへ        次ページへ

タイトル欄のアドレスは、エクセルファンクラブの該当する頁へのリンク先です。
詳しい事は、こちらの
お願いをご覧になってください。

1  印刷範囲を設定するには?
2  エクセルの通常使うプリンターを変更
3  指定のセルに、各ページ数を表示して印刷
4  Excelの全ての文書で、通常使うプリンタを変更したい
5  現在のページ設定で1ページ当りの印刷可能範囲をポイントで取得するには?
6  セルに設定している色を無視して文字色は黒、背景は白で印刷するには
7  フォルダ名、ファイル名、シート名に変数を使うには
8  シート毎にプリンタを変えるには
9  ページ番号表示を逆順で表示するには
10 最終ページだけのページ番号の横に「終了」と入れるには?
11 印刷設定を複写するには?
12 印刷範囲を全シートに一括で設定するには
13 印刷のヘッダにパスをいれるには?
14  1シートの印刷ページ数を取得するには?
15 開いている複数のブックの全てのシートにページ数を入れて印刷するには
16 一つのブックの全てのシート、複数のブックの全てのシートを印刷するには
17 印刷フッターに、複数のセルの値を設定するには
18 新規ファイルの印刷設定を既定値に戻したい
19 ページを指定して印刷するには
20 ブックの任意のシートを一括して印刷するには

1 印刷範囲を設定するには?
Excel97、Excel2000 共通
印刷したい範囲を選択し、「ファイル」、「印刷範囲」、「印刷範囲の設定」。
Sheet1、A1セルからJ10セルの範囲で設定します
Sub test()
 Worksheets("Sheet1").PageSetup.PrintArea = "A1:J10"
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
アクティブなシートの、使用している範囲を設定します。
Sub test()
 ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), _
     Cells(Cells.SpecialCells(xlCellTypeLastCell).Row, _
     Cells.SpecialCells(xlCellTypeLastCell).Column)).Address
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
2 エクセルの通常使うプリンターを変更
Sub test()
 Application.ActivePrinter = "プリンタ名"
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。

プリンタ名は、マクロの自動記録で確認します。
 マクロの自動記録で、プリンタ名を取得するには

ただし、バージョンによって書き方が異なりますので、注意が必要です。
Excel97〜97SR2 , 2000SR1 ‥‥‥ "EPSON MJ-3000C on LPTn:"
Excel2000(未SR1)     ‥‥‥ "LPTn: の EPSON MJ-3000C"
 
http://www.microsoft.com/japan/support/kb/articles/J049/8/18.htm

両方のバージョンで対応させたい場合。
 Excel2000とExcel97で違うプリンタ名の指定を、両方で対応させるには

3 指定のセルに、各ページ数を表示して印刷
http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cgi?print+200011/00110146.txt
 「ページ数を自動計算させるにはどうすれば?」 【編集ラウンジ】
1ページづつを印刷する都度、A1セルに該当ページ数を表示させてから、印刷作業を実行しています。
Sub ページ数印刷2()
 Dim page As Integer, j As Integer, Lastcol As Integer

 '最終ページ数取得
 page = (ActiveSheet.HPageBreaks.Count + 1) * (ActiveSheet.VPageBreaks.Count + 1)
  
'1ページ目から最終ページまで以下の作業を繰り返す
 
For j = 1 To page
 
 'A1セルに各ページ数を表示
  
Cells(1, 1) = (j & " / " & page & " ページ")
  
'該当ページだけを印刷
  
ActiveSheet.PrintOut From:=j, To:=j, Copies:=1, Collate:=True
 Next
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
4 Excelの全ての文書で、通常使うプリンタを変更したい
http://www.keep-on.com/~excelyou/2000lng4/200006/00060125.txt
  「Excelの全ての文書で、通常使うプリンタを変更したい」 【VBAラウンジ】
個人用マクロブック(PERSONAL.XLS)に以下のコードを記入します。
プリンターの機種設定 " " の中身はマクロの自動記録で確認します。
 マクロの自動記録で、プリンタ名を取得するには

ただし、バージョンによって書き方が異なりますので、注意が必要です。
Excel97〜97SR2 , 2000SR1 ‥‥‥ "Canon BJ2000 (MS) on LPTn:"
Excel2000(未SR1)     ‥‥‥ "LPTn: の Canon BJ2000 (MS)" 
 
http://www.microsoft.com/japan/support/kb/articles/J049/8/18.htm

両方のバージョンで対応させたい場合。
 
Excel2000とExcel97で違うプリンタ名の指定を、両方で対応させるには
 Sub auto_open()
  Application.ActivePrinter = "Canon BJ2000 (MS) on LPT1:"
 End sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
  (ただし、上記のマクロの使い方で、4番目の「Alt+F8 でマクロ名を選んで、
   実行します」は、この場合必要ありません。)

5 現在のページ設定で1ページ当りの印刷可能範囲をポイントで取得するには?
Sub test()
 On Error GoTo err1
 a = Application.ExecuteExcel4Macro("get.document(64)")
 b = Application.ExecuteExcel4Macro("get.document(65)")
 MsgBox Cells(a, b).Top & Chr(10) & Cells(a, b).Left
 Exit Sub
err1:
 ActiveSheet.Cells(60000, 200) = True    
'範囲外の適当なセルに何か書きこむ
 a = Application.ExecuteExcel4Macro("get.document(64)")
 b = Application.ExecuteExcel4Macro("get.document(65)")
 ActiveSheet.Cells(60000, 200).Delete
 MsgBox Cells(a, b).Top & Chr(10) & Cells(a, b).Left
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
6 セルに設定している色を無視して文字色は黒、背景は白で印刷するには
Excel97、Excel2000 共通
[ファイル]、[ページ設定]、[シート]、[白黒印刷]にチェックを入れます。
7 フォルダ名、ファイル名、シート名に変数を使うには
Sub test()
 Dim Finame As String, Foname As String, Sheetname As String
 Foname = "miko"          
'フォルダ名
 Finame = "test"          
'ファイル名
 Sheetname = "Sheet3"      
'シート名
 Workbooks.Open Filename:="C:\My Documents\" & Foname & "\" & Finame
 Worksheets(Sheetname).Activate
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
8 シート毎にプリンタを変えるには
http://www.keep-on.com/~excelyou/2000lng5/200006/00060120.txt
  「シート毎にプリンタ設定を変える(保存)するには」  【その他ラウンジ】
Private Sub Worksheet_Activate()
 Application.ActivePrinter = "LPT1: の EPSON MJ-3000C"
End Sub

  このコードの使い方は、マクロの使い方(2)該当するシートのモジュールにあります。

シートごとにこのように書くと、それぞれのシートを選択するたびに切り替わります。
LPT1: の EPSON MJ-3000Cの所のプリンタ名は、マクロの自動記録で確認します。
 マクロの自動記録で、プリンタ名を取得するには

ただし、バージョンによって書き方が異なりますので、注意が必要です。
Excel97〜97SR2 , 2000SR1 ‥‥‥ "EPSON MJ-3000C on LPTn:"
Excel2000(未SR1)     ‥‥‥ "LPTn: の EPSON MJ-3000C"
 http://www.microsoft.com/japan/support/kb/articles/J049/8/18.htm
両方のバージョンで対応させたい場合……
 
Excel2000とExcel97で違うプリンタ名の指定を、両方で対応させるには

9 ページ番号表示を逆順で表示するには
http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cgi?print+200012/00120146.txt
  「フッターのページ番号表示を逆順で表示したいっす。」 【編集ラウンジ】
Excel2000 のみ
1. 印刷プレビューなどで総ページ数を調べます。
2. [ファイル][ページ設定][ヘッダー/フッター][ヘッダーの編集またはフッターの編集]
  表示したい場所に、たとえば総ページ数が 5 の場合
  &[ページ番号]-6- 
  とします。
10 最終ページだけのページ番号の横に「終了」と入れるには?
Sub Test()
 Dim LastPage As Integer
 Const cFooter As String = "ページ &P"
 With ActiveSheet
  'アクティブシートの総ページ数取得
  LastPage = (.HPageBreaks.Count + 1) * (.VPageBreaks.Count + 1)
  If LastPage > 1 Then
   'フッター中央部にページ数を指定
   .PageSetup.CenterFooter = cFooter
   '最終ページの一つ前のページまで印刷
   .PrintOut From:=1, To:=LastPage - 1, Copies:=1, Collate:=True
  End If
  'フッターの内容を変更
  .PageSetup.CenterFooter = cFooter & " 終了"
  '最終ページを印刷
  .PrintOut From:=LastPage, To:=LastPage, Copies:=1, Collate:=True
 End With
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
11 印刷設定を複写するには?
http://www.keep-on.com/~excelyou/2000lng5/200007/00070031.txt
  「印刷設定を複写するには?」 【その他ラウンジ】
Excel97、Excel2000 共通
1. 複写元のシートをアクティブにし、シートの見出しを[Ctrl]を押しながら
  複写先のシート見出しを選択します。
2. ファイル、ページ設定で、ダイアログを開き、何もせずそのまま[OK]を押すと
  アクティブなシートのページ設定がコピーされます。
マクロを使った印刷設定
 Sub 印刷設定()
  With ActiveSheet
   With .PageSetup
   .PrintArea = "$A$1:$E$9"                   
'印刷範囲の設定
   .LeftHeader = "&T&D"                      
'ヘッダー左 日付時間
   .CenterHeader = "&P"                      
'ヘッダー中央 ページNo
   .RightHeader = ""                         
'ヘッダー右 空白
   .LeftFooter = ""                         
'ヘッダー左 空白
   .CenterFooter = ""                        
'フッター中央 空白
   .RightFooter = "&F"                       
 'フッター右 ファイル名
   .LeftMargin = Application.CentimetersToPoints(1.5)     
'左余白 1.5cm
   .RightMargin = Application.CentimetersToPoints(2.5)    
 '右余白 2.5cm
   .TopMargin = Application.CentimetersToPoints(2#)    
'上余白 2.0cm
   .BottomMargin = Application.CentimetersToPoints(1#)   
'下余白 1.0cm
   .HeaderMargin = Application.CentimetersToPoints(0.8)  
 'ヘッダー余白 0.8cm
   .FooterMargin = Application.CentimetersToPoints(1.8)   
'フッター余白 1.8cm
   .Orientation = xlLandscape                  
'用紙横向き設定
   .PaperSize = xlPaperB5                    
'用紙サイズをB5に設定
   End With
   .PrintPreview                           
'印刷プレビューで確認
  End With
 End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
12 印刷範囲を全シートに一括で設定するには
Sub myPrintArea()
 Dim Sh As Worksheet
 Dim pCell As Range
 On Error Resume Next
 Set pCell = Application.InputBox("印刷範囲をマウスでドラッグして下さい。", Type:=8)
 If pCell Is Nothing Then Exit Sub
 For Each Sh In Worksheets
  Sh.PageSetup.PrintArea = pCell.Address
 Next Sh
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
13 印刷のヘッダにパスをいれるには?
http://www.keep-on.com/~excelyou/2000lng1/200007/00070105.txt
  「印刷のヘッダにパスをいれるには?」 【編集ラウンジ】
Private Sub Workbook_BeforePrint(Cancel As Boolean)
 ActiveSheet.PageSetup.CenterHeader = ThisWorkbook.FullName
End Sub
  このコードの使い方は、マクロの使い方(3)This Workbookのモジュールにあります。
14 1シートの印刷ページ数を取得するには?
Sub Test2()
 MsgBox "全ページ数は" & (ActiveSheet.HPageBreaks.Count + 1) * _
     (ActiveSheet.VPageBreaks.Count + 1) & "ページです。"
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
15 開いている複数のブックの全てのシートにページ数を入れて印刷するには
Sub test()
 Dim pg As Integer, wb As Workbook, ws As Worksheet
 For Each wb In Workbooks
  For Each ws In wb.Worksheets
  pg = pg + 1
  ws.PageSetup.CenterFooter = pg & "ページ"
  ws.PrintOut
  Next
 Next
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
16 一つのブックの全てのシート、複数のブックの全てのシートを印刷するには
http://cgi.fuji.ne.jp/~fj2094/cgi-bin5/wwwlng.cgi?print+200010/00100056.txt
  「移動やコピーでセルの設定を維持するには」  【その他ラウンジ】
Excel97、Excel2000 共通
 同一ブックの場合
  シート下部のシート見出しをCtrlを押しながらクリックし、複数のシートを選択します。
  そのまま印刷すれば、選択したシート全てが印刷できます。
 複数のブックの場合
  1. 新規BOOKと、印刷したいシートを含んだ全てのBOOKを開きます。
  2. 印刷したいシートの下のタブを右クリック、コピーを選び、コピー先に新規BOOKを選ぶことで、
    次々に新規BOOKにコピーしていきます。
  3. そうすれば新規BOOKが印刷したいシートの集合状態になりますので、
    上の「同一ブックの場合」の方法で印刷します。
17 印刷フッターに、複数のセルの値を設定するには
http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cgi?print+200010/00100226.txt
  「見出しを各ページに印刷するように合計を下部に表示するには?」  【編集ラウンジ】
Private Sub Workbook_BeforePrint(Cancel As Boolean)
 Dim atai As String , daimei As String
 With ActiveSheet.PageSetup
  '.LeftFooter = ""
   .CenterFooter = ""
  '.RightFooter = ""
 End With
 atai = Range("A7") & " " & Range("B7") & " " & Range("C7")
 daimei = "事象A" & "  " & "事象B" & "   " & "事象C"
 ActiveSheet.PageSetup.CenterFooter = daimei & Chr(10) & atai
End Sub
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
18 新規ファイルの印刷設定を既定値に戻したい
http://www.keep-on.com/~excelyou/2000lng1/200009/00090081.txt
  「テンプレートファイルの場所を見つけたい」  【編集ラウンジ】
Excel97、Excel2000 共通
テンプレートで設定が変更されている場合、XLSTARTフォルダに入っているBook.xltとSheet.xltを削除します。
Excel97、Excel2000 共通
OSレベルでプリンタのプロパティが変更されている場合、
[スタート]-[設定]-[プリンタ]でお使いのプリンタを右クリックしてプロパティの設定を戻します。
19 ページを指定して印刷するには
http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200103/01030250.txt
  「マクロで印刷」  【VBAラウンジ】
アクティブシートの、1〜5ページまで印刷します
 Sub test()
  ActiveSheet.PrintOut From:=1, To:=5  '1〜5ページまで印刷
 End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
20 ブックの任意のシートを一括して印刷するには
http://cgi.fuji.ne.jp/~fj2094/cgi-bin5/wwwlng.cgi?print+200010/00100056.txt
  「移動やコピーでセルの設定を維持するには」  【その他ラウンジ】
Excel97、Excel2000 共通
  シート下部のシート見出しをCtrlを押しながらクリックし、複数のシートを選択します。
  そのまま印刷すれば、選択したシート全てが印刷できます。
アクティブシートの、Sheet2, Sheet4を印刷します
 Sub test()
  Sheets(Array("Sheet2", "Sheet4")).PrintOut
 End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。

HOME  検索  索引  もくじ  関数目次ージへ        次ページへ

このページのTOPへ

 

 

 

inserted by FC2 system