[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数シートを両面印刷時にシート毎に改ページをしたい。』(初心者)
シートをグループ化して両面印刷する時の改ページについて教えてください。
例
・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
参考:同じプリンターのコピーを複数作成する
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.