- ベストアンサー
エクセルでの一括印刷について
- エクセルでの一括印刷についての質問です。VBA初心者であるため、簡単なマクロ設定は可能ですが、一括印刷に関しては効率化ができるか検討しています。
- 現在、accessからエクセルにインポートした情報を元に印刷を行っており、入力フォームに入力されたIDを元にテンプレートタブから情報を取得しています。個人ごとの印刷では手作業で行っていますが、一括で印刷する方法をVBAで実現できるかどうかについて質問です。
- マクロ登録において、IDの最大数が変化するため、60名で登録しておくと無駄な印刷が発生する可能性があります。IDの最大数が変動しても対応できるVBAの記載方法について教えていただきたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> VBAの式を全て書いていただけると大変助かります>< 一括印刷のボタンを右クリックしてマクロの登録→新規作成か、デザインモードにしてダブルクリックすると Sub なんとか() ←なんとかはボタンによるのでこちらでは書けません。 End Sub となるので Sub なんとか() Dim i As Long With Sheets("情報") For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row Sheets("入力フォーム").Range("C2").Value = .Cells(i, "A").Value ここに印刷コード Next End With End Sub となるようにしてください。情報や入力フォームは実際のシート名にしてください。 「ここに印刷コード」と書いているところに現在の個人印刷マクロの名前、上記でいうと「なんとか」の部分を記載してください。 なんとかでエラーになるようでしたら Call なんとか にしてください。 ボタンによってはそれでもエラーになる事がありますので、その場合は、個人印刷のコードをそのまま該当部分に入れ込んでください。
その他の回答 (2)
- kkkkkm
- ベストアンサー率66% (1719/2589)
No1です。 入力フォームのC2に入れるのを記載忘れてました。 For Each c In .Range(.Cells(2, "A"), .Cells(Rows.Count, "A").End(xlUp)) Sheets("入力フォーム").Range("C2").Value = c.Value '↑にIDデータが2行目から順に最終行まで入ります。 '印刷のコード Sheets("入力フォーム").Range("C2").Value = .Cells(i, "A").Value '↑にIDデータが2行目から順に最終行まで入ります。 '印刷のコード
- kkkkkm
- ベストアンサー率66% (1719/2589)
マクロで最終行が求められますので以下のどちらかで Dim c As Range With Sheets("情報") For Each c In .Range(.Cells(2, "A"), .Cells(Rows.Count, "A").End(xlUp)) c.Value '↑にIDデータが2行目から順に最終行まで入ります。 'やりたいこと Next End With もしくは Dim i As Long With Sheets("情報") For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row .Cells(i, "A").Value '↑にIDデータが2行目から順に最終行まで入ります。 'やりたいこと Next End With
お礼
お返事が遅くなり申し訳ありません。 VBAの式の理解をしないと難しいですね>< VBAの式を全て書いていただけると大変助かります>< わがままいって申し訳ありません><
補足
Dim i As Long With Sheets("情報") For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row .Cells(i, "A").Value Sheets("入力フォーム").Range("C2").Value = .Cells(i, "A").Value ここに印刷コード Next End With 上記で間違っていませんでしょうか?