[[20200804114629]] 『複数シートを両面印刷時にシート毎に改ページをし』(初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『複数シートを両面印刷時にシート毎に改ページをしたい。』(初心者)

シートをグループ化して両面印刷する時の改ページについて教えてください。

・Sheet1  3ページ分
・Sheet2  1ページ分
これらのシートをグループ化し両面印刷をかけると
・1枚目表 Sheet1の1ページ目の内容
 1枚目裏 Sheet1の2ページ目の内容
・2枚目表 Shhet1の3ページ目の内容
 2枚目裏 Shhet2の1ページ目の内容
となります。
これを
・1枚目表 Sheet1の1ページ目の内容
 1枚目裏 Sheet1の2ページ目の内容
・2枚目表 Shhet1の3ページ目の内容
 2枚目裏 空白
・3枚目表 Shhet2の1ページ目の内容
 3枚目裏 空白
のように印刷をしたいです。
識者の方お助けください。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 空白にあたる部分に白紙の印刷範囲を入れておけばいいのでは?
(コナミ) 2020/08/04(火) 12:23

アドバイスありがとうございます。

情報不足で申し訳ありません。
印刷したいSheetの数が大量にあります。(月によって違いますが平均で50程度です。)
よって白紙の印刷範囲追加は避けたいです。

またSheet内の情報は作成のタイミングによって変わります。

・Sheet1  3ページ分 → 作成時期によって5ページ分になったり
              1ページ分になったりで増減があります。

(初心者) 2020/08/04(火) 14:16


 1シートずつ印刷すればいいんでないですか?
 めんどくさくても、最初はマクロの記録取れば、あとはボタン一回でできると思うのですが・・・。

(稲葉) 2020/08/04(火) 15:22


アドバイスありがとうございます。

情報不足で申し訳ありません。
大人数で1台のプリンターを利用しています。
1Sheet毎両面印刷×50Sheet分ですと、他の人の印刷物が混ざってしまいますので
それを避ける為にグループ化して両面印刷をしています>グループ化して印刷すると
他の人の印刷が混ざりません。

(初心者) 2020/08/04(火) 16:12


 他の提案だと・・・
 シートごとの印刷品質を変更する
https://faq.ricoh.jp/app/answers/detail/a_id/1986/~/%E3%82%B7%E3%83%BC%E3%83%88%E3%81%AE%E5%88%86%E3%81%8B%E3%82%8C%E3%81%9Fexcel%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%B8%A1%E9%9D%A2%E5%8D%B0%E5%88%B7%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6
 この現象を逆手にとってしまえば、行ける気がする
 フルカラーとかでない限り、200dpiだろうか1200dpiだろうがそんなに影響ないと思う。

 あとは・・・
 1)ほかの人に一言声かけて待ってもらう
 2)プリンターの機能で、取りに行くまでパスワードなどで保護する
 3)PDFに出力して、結合してから印刷する

(稲葉) 2020/08/04(火) 16:29


アドバイスありがとうございます。

なるほど!
エクセル機能に拘らないアプローチ参考になります。
時間を作って色々試してみたいと思います。
(初心者) 2020/08/05(水) 08:38


解決済みのようですが、参考にしてください。
前提条件付きです。
条件1:奇数ページで終わるシートは、
 ・幅(列方向)が1ページに収まること
 ・印刷範囲の設定は無く、シート全体が印刷範囲のこと
条件2:両面印刷設定されたプリンターがインストールされていること

参考:同じプリンターのコピーを複数作成する
https://www.bearcomputing.jp/printer-copy-windows10/
Windowsの詳しい人に見せて両面印刷プリンターを追加して貰って下さい。

スペースセルを追加しますが、印刷後元に戻しています。
なお、両面印刷プリンターを持っていないので印刷確認はしていません。

 Sub test()
    Const RYOUMEN = "両面印刷"  '実際の両面印刷プリンター名にすること
    Const PRS = 15              '1ページ分の行数の約半分未満のこと
    Dim pName As String
    Dim sh As Worksheet
    Dim r As Range, dummy() As Range

    ReDim dummy(1 To Worksheets.Count)
    For Each sh In ActiveWindow.SelectedSheets
        With sh.PageSetup
            If .Pages.Count Mod 2 = 1 Then              'ページ数奇数なら
                .PrintArea = ""                     '念のため印刷範囲クリア
                Set r = sh.UsedRange                '最終セル取得
                Set r = r.Offset(r.Rows.Count).Cells(1)
                Do
                    Set r = r.Offset(PRS)
                    r.Value = " "                   'ページが増えるようスペースを記入
                    DoEvents
                    If .Pages.Count Mod 2 = 0 Then
                        Set dummy(sh.Index) = r     '記入セルを記憶
                        Exit Do
                    Else
                        r.ClearContents
                    End If
                Loop
            End If
        End With
    Next
    pName = ActivePrinter                               'プリンター退避
    ActiveWindow.SelectedSheets.PrintOut ActivePrinter:=RYOUMEN, Collate:=True  '両面印刷プリンターで印刷
    ActivePrinter = pName                               'プリンター復帰
    For Each sh In ActiveWindow.SelectedSheets
        If Not dummy(sh.Index) Is Nothing Then
            dummy(sh.Index).ClearContents           '記入したスペースクリア
            Set r = sh.UsedRange                    '使用エリア再設定
        End If
    Next
 End Sub

(kazuo) 2020/08/05(水) 09:31


アドバイスありがとうございます。

ご丁寧にコードまで記述いただき非常に助かります!
これで悩みが解決できるのならVBAはとても便利なツールだと感じました。

このままコードをコピーして使うのでは無く、コマンドの意味等を調べながら試してみたくなりました。
VBAは苦手ですが頑張ってみます。

(初心者) 2020/08/05(水) 11:14


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.