こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

EXCEL 複数シートの複数頁の印刷順を変更したい

あるEXCELファイルに、
SHEET1 0頁目
SHEET2 印刷設定(1,4,7頁)
SHEET3 印刷設定(2,5,8頁)
SHEET4 印刷設定(3,6,9頁)
SHEET5 10頁目

というシートがあります。
これをシート全てを印刷とすると、
0,1,4,7,2,5,8,3,6,9,10 と印刷されます。
現在これをPDF印刷したのちに、手作業で、0,1,2,。。。と
順番通りに編集を毎回しております。
これをPDF表示時点で0,1,2,。。。とならないものかと
悩んでおります。
これは、1例ですので、頁総数が10倍以上になったり、イレギュラー
になったりするのを毎回PDF更新ソフトで順番変更しております。
これを是非、一回の印刷でこの順番通りに印刷できないものかと
悩んでおります。
SHEET内印刷頁を記憶して(別シートに記述して)やる方法は、
いくつか見つけたのですが、結局一回毎の印刷になるので、
数十枚印刷画面を指定して、作成されたPDFファイルを、今度は
一つのファイルに結合するという作業が発生するというこのに
なってしまいます。

SHEET毎にフォーマット(列数が多かったり幅指定が相違したりして
おります)が異なるため、一つのシートにコピーするということも
できません。

プリントアウト前のスプールをVBA上で指定できれば可能かと
思っているのですが、全くできない状態です。

どうにかこの問題を解決できる案がございましたら、ご教授
願います。
因みに、VBAは問題なくつかえる技術はあるつもりです。

よろしくお願い致します。

投稿日時 - 2018-02-10 12:10:13

QNo.9427567

すぐに回答ほしいです

質問者が選んだベストアンサー

強引な手段ではありますが、
ページごとにシートを分けてやるのが手っ取り早いかと。

やっつけ仕事で申し訳ないですが、例えば
シート「pages」を用意して、
A列にページ番号、B列にシートの名前、C列に範囲・・・
  1  SheetA  A1:H5
  2  SheetB  T1:AA5
  3  SheetA  AA1:AH5
などのように持たせ、以下、走らせます。

Sub Sample()
Dim NB As Workbook, WB As Workbook
Dim NS As Worksheet, WS As Worksheet
Dim Arr() As String: ReDim Arr(0)

  Set WB = ThisWorkbook: Set WS = WB.Sheets("pages")
  Set NB = Workbooks.Add

  For i = 1 To WS.Cells(WS.Rows.Count, 3).End(xlUp).Row
    Set NS = NB.Worksheets.Add(After:=NB.Sheets(NB.Sheets.Count))
    NS.Name = i
    Arr(UBound(Arr)) = i
    ReDim Preserve Arr(UBound(Arr) + 1)

    WB.Sheets(WS.Cells(i, 2).Value).Range(WS.Cells(i, 3).Value).Copy
      NS.Range("A1").PasteSpecial Paste:=xlPasteColumnWidths
      NS.Range("A1").PasteSpecial Paste:=xlPasteAll
  Next
  ReDim Preserve Arr(UBound(Arr) - 1)

  NB.Sheets(Arr).Select
  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                  Filename:= C:\フルパス.pdf", _
                  Quality:=xlQualityStandard, _
                  IncludeDocProperties:=True, _
                  IgnorePrintAreas:=False, _
                  OpenAfterPublish:= False
End Sub

など。



Acrobat をお持ちなら
  http://www.fastclassinfo.com/entry/vba_pdf_combine
のような手段もあります。

まぁ、基本的にどこかで手間はかかりますよ。

投稿日時 - 2018-02-13 10:40:37

お礼

ありがとうございます。
ですよね~。やはり一手間どこかでかかりますよね。。。

投稿日時 - 2018-03-08 09:53:49

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

シート1からシート5までを選択し、
印刷指示を行えば、
印刷ジョブが1つで、印刷ページが11ページになるわけですから、
印刷順番が期待と異なるものの、
作成されるPDFファイルが1つで
そこに11ページが格納されますネ。

他方、
一般的な解とすれば、適当なシート上に、
印刷対象シート名、印刷範囲を一覧にし、
VBAで
・印刷範囲を設定して印刷する
という命令を印刷ページ数(つまり11回)
繰り返すことになるものと思います。

しかし、一般的なPDF化ツールの場合、
印刷ジョブが11ジョブに分かれてしまいますから
PDFファイルも11ファイルに分かれてしまい、
結局、1つのPDFファイルに編集する作業から逃れることができません。


PDF化するツール(ドライバー)は
世にたくさんあり、
中には、印刷ジョブが分かれても
1つのPDFファイルに順次追記する機能があります。

今、Kuronari12さんが使ってるPDF化するツールに
この機能があれば、
VBAで比較的容易に実現できるだろうと思います。

投稿日時 - 2018-02-10 14:35:19

お礼

ありがとうございます。
PDF化ツールを探してみますね。

投稿日時 - 2018-03-08 09:51:10

印刷の順序が「部単位」になってるときの動作っぽいですが_

すみません。手作業で、ここにチェックを入れて印刷。消して印刷で順番どうでしょう?

投稿日時 - 2018-02-10 14:15:29

お礼

ありがとうございます。
やはり、手作業になりますよね。。。

投稿日時 - 2018-03-08 09:52:04