- ベストアンサー
エクセル 印刷マクロ
Win XP /エクセル2003 使用です。 エクセルで請求書を作成しています。 1件の請求書に1行目から100行目を使用し、 2件目は、101行目から200行目、 3件目は、201行目から300行目・・・を使用しています。 現在、印刷する時は、一枚一枚、 「印刷範囲を指定」して出力しているのですが、 これをマクロまたはVBAのボタン機能を使って、 印刷できるようにしたいのですが、 何か良いサンプルなどはありますでしょうか? よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
私は、頭が悪いのでしょうか、質問が良く分かりません。一体、どうしたわけでしょうか? 印刷範囲を指定しないでも良いようにしたいのか、#2さんのマクロのように、印刷範囲を、マクロで指定したいのでしょうか?それとも、1件目、2件目というように別けたいのでしょうか。 #1さんのご指摘のように、1ページを100行に指定すれば良いわけですが、それだとかなり小さくなりますね。100%の倍率で、せいぜい50行前後ですから。 縮小せずに、1件目と2件目の間を別けたいなら、100行目の所に、ページ改行すればよいと思います。タイトルを切り分けるならマクロが必要になるように思いますが。
その他の回答 (2)
- crossgate
- ベストアンサー率65% (78/119)
VBAで書くならこんなところ。 --------------------------------------- '印刷する行数 Private Const PRINT_LINE = 100 '指定できる最大件数(暫定値) Private Const MAX_CNT = 500 Sub Macro1() On Error GoTo EXIT_SUB Dim kensuu As Integer Dim bkrow, bkcol As Long '現在のセル位置の保存(複数セルを選択しているケースは考慮外) bkrow = ActiveCell.Row bkcol = ActiveCell.Column '何件目を印刷するか指定させる kensuu = Application.InputBox("何件目を印刷しますか?", "印刷件数指定", , , , , , 1) '指定した件数の範囲チェック If kensuu <= 0 Or kensuu > MAX_CNT Then '件数が0の場合は「キャンセル」かもしれないので、 '0以外の場合だけメッセージ出力 If kensuu <> 0 Then MsgBox "件数が範囲外です。", vbOKOnly + vbExclamation End If GoTo EXIT_SUB End If '画面更新の抑止設定 Application.ScreenUpdating = False '指定した行数を選択して印刷(標準プリンタ使用) Rows(((kensuu - 1) * PRINT_LINE + 1) & ":" & (kensuu * PRINT_LINE)).Select Selection.PrintOut Copies:=1, Collate:=True 'セル位置の復元 Cells(bkrow, bkcol).Select EXIT_SUB: '画面更新の抑止解除 Application.ScreenUpdating = True Exit Sub End Sub
お礼
crossgate さま 早速のご回答ありがとうございました。 返事が大変遅くなり申し訳ございません。 コードまでご教授いただきありがとうございました。 なんとか解決いたしました。 今後ともよろしくお願いします。
- aokii
- ベストアンサー率23% (5210/22062)
1ページに100行を印刷するようにページ設定を行うことをお勧めします。 必要なら、ページ設定で、一行目をシートの行のタイトルにしては。
お礼
aokii さま 早速のご回答ありがとうございました。 返事が大変遅くなり申し訳ございません。 ご指摘の通りちょっと難しく考えすぎていたようです。 なんとか解決いたしました。 今後ともよろしくお願いします。
お礼
Wendy02 さま 早速のご回答ありがとうございました。 返事が大変遅くなり申し訳ございません。 こちらの質問の仕方が悪く大変申し訳御座いませんでした。 なんとか解決いたしました。 今後ともよろしくお願いします。