|
今回でテンプレートを完成させます。
◆2.3.印刷用VBA
1.一枚に4ページ印刷にて説明した操作をマクロに記録します。
MB、「ツール」!「マクロ」!「新しいマクロの記録」!!「マクロの記録」、「Ok」にて記録をはじめ、印刷の操作をして「マクロの記録」を「停止」します。
VBAエディタにてマクロを開くと次のコードが記憶されています。
ーーーーーーーーーーーーーーーーーーーーー
Sub Macro3()
' Macro3 Macro
' 記録日 01/09/14 記録者 三浦博孝
Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _
wdPrintDocumentContent, Copies:=1, PageS:="4,1,8,5", PageType:= _
wdPrintAllPages, Collate:=True, Background:=True, PrintToFile:=False, _
PrintZoomColumn:=2, PrintZoomRow:=1, PrintZoomPaperWidth:=11907, _
PrintZoomPaperHeight:=16839
End Sub
ーーーーーーーーーーーーーーーーーーー
コードのPageS:= にて印刷するページを指定している事がわかります。
ここに印刷したいページの文字列を作り代入すれば出来あがります。あとはこの文字列データを作るコードの作成です。
(1)冊子印刷プロシージャの概要
@ 印刷するページ数の入力を要求する
A 用紙の表面(二つ折りした時の外側)の印刷か、
裏面(内側)の印刷かの入力を要求する
B 外側印刷のときは 4,1,8,5,… 内側のときは 2,3,6,7,…の文字定数をセットする
C この文字定数を表示して確認を要求する
D 文字定数を PageS:= にセットしたMacro3() のコピーを実行する
(2)詳細
ーーーーーーーーーーーーーーーーーーーーーーー
Sub 冊子印刷()
'
'A4 見開きページで作成したWord文書(小冊子原稿)を
'外側は、4(*i)ページ目と1(*i)ページ目を縮小してA41ページに並べ
'内側は、2(*i)ページ目と3(*i)ページ目を縮小してA4
1ページに並べ
'両面印刷により、A41ページに4ページ印刷したA5版小冊子を
印刷します。
'*iのiは1から原稿枚数の1/4までです。
Dim PageS As String '入力データ用
Dim PageL As String
Dim PageSI As Integer
Dim PageLI As Integer
Dim Soto As Integer 'メッセージからのYesNo戻り値、外側印刷
「はい」で6
Dim I As Integer 'ページ計算用カウンタ
Dim PageNo1 As Integer '左(最初)に印刷するページ
Dim PageNo2 As Integer '右(次)に印刷するページ
Dim PromptPageS As String 'メッセージ用
Dim PromptPageL As String
Dim Prompt As String
Dim PageStr As String '印刷するページの文字列データ
'印刷する最初のページの入力を要求
Do
PromptPageS = "印刷開始する原稿のページ(番号)を入力して下さい。" _
& Chr(10) & Chr(13) & "最初のページは4で割って余りが1のページです。"
PageS = InputBox(PromptPageS)
PageSI = CInt(PageS)
If (PageSI Mod 4) <> 1 Then MsgBox "入力されたページは" & PageSI & "です。" _
& Chr(10) & Chr(13) & "余りが1のページで再度入力して下さい。"
Loop While (PageSI Mod 4) <> 1
'最後のページの入力を要求
Do
PromptPageL = "最後の印刷となる、原稿のページ数(番号)を入力
して下さい。" _
& Chr(10) & Chr(13) & "最後のページは4で割って余りが0のページです。"
PageL = InputBox(PromptPageL)
PageLI = CInt(PageL)
If (PageLI Mod 4) <> 0 Then MsgBox "入力されたページは" &
PageLI & "です。" _
& Chr(10) & Chr(13) & "余りが0のページで再度入力して下さい。"
If PageLI <= (PageSI + 2) Then MsgBox "入力されたページは" &
PageLI & "です。" _
& Chr(10) & Chr(13) & "最初のぺージより3ページ以上大きな
ページで再度入力して下さい。"
Loop While ((PageLI Mod 4) <> 0) Or (PageLI <= (PageSI + 2))
'外側印刷か内側印刷か問い合わせる
PromptSoto = "「はい」は外側(4頁と1頁から始まる)印刷です" _
& Chr(10) & Chr(13) & "「いいえ」は内側(2,4頁から始まる)
印刷です。"
Soto = MsgBox(PromptSoto, vbYesNo)
I = -1
PageStr = ""
If Soto = 6 Then '「はい」即ち外側のとき
Do
I = I + 1
PageNo1 = PageSI + 3 + I * 4
PageNo2 = PageSI + I * 4
PageStr = PageStr & PageNo1 & "," & PageNo2
If PageNo1 < PageLI Then PageStr = PageStr & ","
Loop While PageNo1 < PageLI
ElseIf Soto = 7 Then '「いいえ」即ち内側のとき
Do
I = I + 1
PageNo1 = PageSI + 1 + I * 4
PageNo2 = PageSI + 2 + I * 4
PageStr = PageStr & PageNo1 & "," & PageNo2
If PageNo1 + 2 < PageLI Then PageStr = PageStr & ","
Loop While PageNo1 + 2 < PageLI
End If
'作成した印刷ページの文字定数をメッセージとして表示
Prompt = MsgBox(PageStr, vbOKOnly)
'記録したマクロのPageSに作成した文字列セットし印刷スタート
Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _
wdPrintDocumentContent, Copies:=1, PageS:=PageStr, PageType:= _
wdPrintAllPages, Collate:=True, Background:=True, PrintToFile:=False, _
PrintZoomColumn:=2, PrintZoomRow:=1, PrintZoomPaperWidth:=11907, _
PrintZoomPaperHeight:=16839
End Sub
ーーーーーーーーーーーーーーーーーーー
◇◇ ページ数とページ番号
A41枚に4ページ印刷しますので、印刷するページ数は4の倍数準備します。
原稿が4の倍数でない場合は空白のページを追加します。
ページ番号を挿入した文章は、そのページ番号にて印刷ページを指定します。
ページ番号の挿入は最初のセクションは1ページから、その後のセクションは「前のセクションから継続」を選びます。
横書きの見開き文章は奇数ページが右側に配置されます。
この事を考慮して文章を配置し、ヘッダー/フッターを記入します。
(4)コマンドの追加
{sub 冊子印刷()}の実行を指示するコマンドを第1章はがきの印刷と同じように追加します。
追加の方法は 第1章 6.3コマンドの追加 を参照して下さい。
(5)テンプレートに追加
書式とVBAの作成が済んだら、文書を白紙にして
MB、「ファイル」!「名前を付けて保存」!!「ファイル名を付けて保存」、「ファイルの種類」、{文書テンプレート(*.dot)}
にて保存ファイルが「Templates」になり「ファイル名」、{冊子}:、「保存」にて{冊子.dot}のテンプレート完成です。
(第1章 はがきの印刷 と同じ)
◆次週は3.文書から冊子へ で長い文書を取り扱います。
|