[[20160511132153]] 『特定の複数シートを印刷したい。』(まくまく) ページの最後に飛ぶ

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

 

『特定の複数シートを印刷したい。』(まくまく)

複数シートを印刷したいのですが、ページ数?/?がある為、まとめて選択して印刷をかけると、全シートでのページ数になってしまいます。シート毎にページ数を付けたいので、マクロを使って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.