Excel VBA セルで示されたシート名のシートを順に印刷するには?

Question 5304 拙著「Excel VBA そのまま使える実用マクロ 500連発」 Previous Next
詳細は こちら サンプルNo.363 ◆ 環境・・ Excel 2003 & Windows XP

このマクロが一番近いのかなと思いますが、お尋ねします。
50行の表があります。A2から順に名前を入れ、その人のデータを入れていきます。
印刷する様式は何枚かあり、その人によって入るシートが異なります。選択するシート名は順に"J1"に出てきます。
    Dim Num As Integer
    For Num = 1 To 入力されている行数
        Range("H1").Value = Num
        Sheets(Range("J1").Value).PrintOut
    Next Num
A2~A51に入力されている行数にしたいのです。よろしくお願いします。
Answer   Copyright (C) 2007.3.28 Yoshioh Nagai
拙著 「Excel VBA そのまま使える実用マクロ 500連発」 を お求めいただき、ありがとうございます。
363番は「印刷の開始ページ・終了ページ・印刷部数を変数で指定して印刷する」と題するサンプルで、マクロコードは次のとおりです。
Sub 印刷の開始ページ終了ページ印刷部数を変数で指定して印刷する()
    開始ページ = 1
    終了ページ = 1
    印刷部数 = 1
    ActiveSheet.PrintOut From:=開始ページ, To:=終了ページ, Copies:=印刷部数
End Sub
このマクロと、あなたがお知りになりたいこととは、それほど近いように思えませんが、一応、お答えします。

ご質問文から右図のように、ワークシートを再現してみました。
・赤色のH1セル … ご質問の主旨とは無関係のようです。
・緑色のJ1セル … 「その人に対応するシート名が順に出てく
 る」ということですが、ご提示いただいたマクロの中には該当
 するコードが見当たりません。
・このシートとJ1セルで指定されたシートとのデータのつながりが、はっきりしてません。

が、ご質問主旨とは無関係のため説明を省略されたと解釈して、以下に回答をお示しします。
    Dim Num As Integer
    入力されている行数 = Range("A" & Rows.Count).End(xlUp).Row - 1
                                                '下端行を取得し件数算出
    For Num = 1 To 入力されている行数
        Range("H1").Value = Num                 '(直接は関係なさそうなコード)
        Sheets(Range("J1").Value).PrintOut
    Next Num
データの下端行が 51 で固定ならば、2行目のコードを下記のようにズバリにできます。
   入力されている行数 = 51 - 1
蛇足ですが、51 - 1 としたのは、50人分入っているということだからです。

以上で回答を終わりますが、主旨の取り違いなどがありましたら、ご連絡ください。


 

Excel VBA Macro