[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『特定の複数シートを印刷したい。』(まくまく)
複数シートを印刷したいのですが、ページ数?/?がある為、まとめて選択して印刷をかけると、全シートでのページ数になってしまいます。シート毎にページ数を付けたいので、マクロを使って1シート毎に印刷をすれば良さそうなのですが、印刷不要なシートもある為、リストにあるシートを全て印刷するようにしたいです。
シート1にシート名が入ったリストがあり、200個ほどデータが入っていますが、その全てのシートが存在するわけではなく、10個から50個くらいシートが存在しますが、毎回その数は変わります。
また、印刷設定を両面・白黒にしたいです。
< 使用 Excel:unknown、使用 OS:unknown >
Sub test() Dim S() As String Dim cw As String Dim i As Long Dim ip As Long
ip = 0 ReDim S(0)
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row Err.Clear On Error Resume Next cw = Sheets(Cells(i, "A").Value).Name On Error GoTo 0 If Err.Number = 0 Then ReDim Preserve S(ip) S(ip) = cw ip = ip + 1 End If Next i
If S(0) <> "" Then Worksheets(S).Select Application.Dialogs(xlDialogPrint).Show End If End Sub (???) 2016/05/11(水) 16:04
しかし、やはりページ数の分母が合算されたものになっているようです。
地道に1シート毎に印刷をかけるしかないのでしょうか…
(まくまく) 2016/05/14(土) 18:41
こんばんわ。
マクロは基本手操作を自動化するものですから、手操作で不可能な事は出来ないと思った方が良いです。
VBA(APIで取得できるかは知りませんが)では手操作で複数シートを選択して印刷する時に、1回の印刷単位でシート毎のページ数を取得するプロパティは無いと思います。
出来るとすれば、フッターにシートのデータからページ数を算出して表示させ、印刷を1シート分づつに分けて、ページ指定して印刷を繰り返す方法になると思いますけど、 そんな事するくらいなら、普通に下のように1シートづつ印刷する方が、記述も簡単ですしコードもすっきりします。 またデータからページ数を算出するような計算の必要性も無くなります。
マクロでループで行えば1回の実行で複数印刷も可能なので、無理に複数シート選択で印刷する必要性が分かりません。
Sub Print_test() Dim i As Integer
For i = 1 To Sheets.Count If WorksheetFunction.CountIf(リスト, Sheets(i).Name) > 0 Then Sheets(i).PrintOut Next i
End Sub
(sy) 2016/05/14(土) 20:07
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.