- ベストアンサー
Excel VBAの連続印刷について。
Excel VBAをこれから始めてみようとしている超初心者です。 手始めとして、以下の処理をさせてやろうかと思っていたのですが いきなり挫折しまいました。。 ◎Sheet1から順番に最終シートまでを連続印刷。 ◎最終シートまで印刷されたら処理終了で、Sheet1を表示させる。 ・データによってシート数は変動する。最終がSheet50の時もあれば Sheet300の時もあり。 ・シート名は「Sheet」+半角数字で、連続している。 シート名を変数にして、1ずつ加えていって…と考えながら、色々と 繰り返し処理についてもネットで調べてみたのですが、結局頭の中で 行き詰ってしまいました。 非常に簡単な処理だとは思うのですが、どのような書き方があるのか ご教示頂ければ助かります。 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> 例えばシートの並びが、「資料1」「資料2」「sheet1」~ 「sheet50」とある場合で、「資料1」「資料2」を飛ばして印刷せず 「sheet1」から始まって残りを全て印刷というパターン 資料という文字が入っていないシートを全て印刷するならこんな感じかな。 Sub test02() For Each sh In Worksheets sh.Activate If Not ActiveSheet.Name Like "*資料*" Then ActiveSheet.PrintOut End If Next Worksheets(1).Activate End Sub
その他の回答 (2)
- genshoku
- ベストアンサー率75% (34/45)
もう既に模範解答が出ていますので蛇足ですが、 WorkBook.Sheets.CountでWorkbookの総シート数を取得することができます。ご参考までに。 For i=1 to WorkBook.Sheets.Count Worksheets(i).Activate ActiveSheet.PrintOut next Worksheets(1).Activate
お礼
WorkBook.Sheets.Countは知りませんでした。 今回使いそうな気がするので、参考にさせて頂きます。 有難うございますm(_ _)m。
- merlionXX
- ベストアンサー率48% (1930/4007)
Sub test01() For Each sh In Worksheets sh.Activate ActiveSheet.PrintOut Next Worksheets(1).Activate End Sub
補足
早速のご回答有難うございます。 For Each ~ Next はこう使うのですね。勉強になります。まだこう いった構文もろくに頭に入っていないもので難儀しております。 少し加工して、何とかエラーも出ず、実行できました。 ついては、ずうずうしくも、もう1点お教え頂けませんでしょうか。 ご回答を頂いた例は、最初から最後まで全シートを印刷するパターン ですが、例えばシートの並びが、「資料1」「資料2」「sheet1」~ 「sheet50」とある場合で、「資料1」「資料2」を飛ばして印刷せず 「sheet1」から始まって残りを全て印刷というパターンでは、上記の 構文で対応できるのでしょうか? 続いてお手間取らせて申し訳ありませんが、宜しくお願いしますm(_ _)m
お礼
なるほど。 If~Elseで「資料~」をはじいてしまえば良かったのですね。 ご丁寧に有難うございましたm(_ _)m。