- 締切済み
Excelの複数シート印刷時、各シートごとに両面印刷したい
Excel2003を使用しています。 複数のシート(Sheet1、Sheet2、Sheet3…)があり、各シートごとのページ数はバラバラ(Sheet1は3ページ、Sheet2は1ページ、Sheet3は5ページ…)です。 この複数シートを一括で両面印刷したいのですが、Sheet1は2ページ(表・裏・表)、Sheet2は1ページ(表)、Sheet3は3ページ(表・裏・表・裏・表)…と、Sheetが変わるごとに表の面から始まるように印刷したいのです。 (Sheet1の最終ページとSheet2の最初のページを表・裏と印刷したくない) 両面印刷はできるのですが、複数シートを一括で印刷しようとすると、どうしても全体で両面印刷になってしまい、シートごとの両面印刷ができません。 シートごとに印刷すればいいのですが、数十シートあるので、非常に手間です。 一括で印刷する際、シートごとに両面印刷をするやり方をご存知の方、ご教授下さい。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- WWolf
- ベストアンサー率26% (51/192)
WWolfです。 長ったらしいスッキリしないコードになって申し訳ありませんが、多分これでいけるかと・・・ 各シートのページ数が奇数であれば1ページ空ページを作り、シート単位で印刷。次のシートのページ数が・・・・と続きます。 どの様なシート構成になっているか判らないので、うまく行かなければ下記のコードにお手をお加え下さい。 Sub test1() Dim WSh As Worksheet Dim H As Integer Dim V As Integer Dim Page As Integer Dim A As String Dim LR As String Dim LC As String For Each WSh In Worksheets H = 0: V = 0: Page = 0 WSh.Select A = WSh.UsedRange.Address LR = WSh.UsedRange.Rows(WSh.UsedRange.Rows.Count).Row LC = WSh.UsedRange.Columns(WSh.UsedRange.Columns.Count).Column If A = "$A$1" Then If IsEmpty(WSh.Range(A).Value) Then MsgBox "印刷データはありません。" Exit Sub End If End If H = WSh.HPageBreaks.Count V = WSh.VPageBreaks.Count If V = 0 Then Page = H + 1 Else H = H + 1 V = V + 1 Page = H * V End If If (Page Mod 2) = 1 Then ActiveSheet.PageSetup.PrintArea = WSh.Range(Cells(1, 1), Cells(LR + 1, LC)).Address WSh.Range(Cells(LR + 1, LC), Cells(LR + 1, LC)).Select WSh.HPageBreaks.Add Before:=ActiveCell Page = Page + 1 End If ActiveSheet.PrintOut Next End Sub
- WWolf
- ベストアンサー率26% (51/192)
こんにちは。 シート毎に両面印刷の設定がページ設定されている事を前提とします。 最も簡単なVBAですと 標準Moduleに Sub test() Dim WSh As Worksheet For Each WSh In Worksheets WSh.Select ActiveSheet.PrintOut Next End Sub を貼り付け実行で可能だと思います。
- chonami
- ベストアンサー率43% (448/1036)
ダミーで白文字とか空白とか入れて白紙のページをつくるとか・・・? あまりうまい回答でなくてすみません。 あとは VBAとかならできるかも・・・
補足
回答ありがとうございます。 両面印刷は、Excelでなくプリンタの設定を一時的に両面印刷にして行っています。 (両面印刷するBookが複数あり、シート総数が数百になるため、シート毎の設定が手間なので…) Excel側の設定で全シート一括印刷時、質問に揚げたような指定ができないか?と思ったのですが、VBAしか手はないのでしょうか…。 現在両面印刷できる環境にいないので、戻ったら試してみます。