• ベストアンサー

エクセル 印刷マクロ

Win XP /エクセル2003 使用です。 エクセルで請求書を作成しています。 1件の請求書に1行目から100行目を使用し、 2件目は、101行目から200行目、 3件目は、201行目から300行目・・・を使用しています。 現在、印刷する時は、一枚一枚、 「印刷範囲を指定」して出力しているのですが、 これをマクロまたはVBAのボタン機能を使って、 印刷できるようにしたいのですが、 何か良いサンプルなどはありますでしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

私は、頭が悪いのでしょうか、質問が良く分かりません。一体、どうしたわけでしょうか? 印刷範囲を指定しないでも良いようにしたいのか、#2さんのマクロのように、印刷範囲を、マクロで指定したいのでしょうか?それとも、1件目、2件目というように別けたいのでしょうか。 #1さんのご指摘のように、1ページを100行に指定すれば良いわけですが、それだとかなり小さくなりますね。100%の倍率で、せいぜい50行前後ですから。 縮小せずに、1件目と2件目の間を別けたいなら、100行目の所に、ページ改行すればよいと思います。タイトルを切り分けるならマクロが必要になるように思いますが。

ken123
質問者

お礼

Wendy02 さま 早速のご回答ありがとうございました。 返事が大変遅くなり申し訳ございません。 こちらの質問の仕方が悪く大変申し訳御座いませんでした。 なんとか解決いたしました。 今後ともよろしくお願いします。

その他の回答 (2)

  • crossgate
  • ベストアンサー率65% (78/119)
回答No.2

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

ken123
質問者

お礼

crossgate さま 早速のご回答ありがとうございました。 返事が大変遅くなり申し訳ございません。 コードまでご教授いただきありがとうございました。 なんとか解決いたしました。 今後ともよろしくお願いします。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

1ページに100行を印刷するようにページ設定を行うことをお勧めします。 必要なら、ページ設定で、一行目をシートの行のタイトルにしては。

ken123
質問者

お礼

aokii さま 早速のご回答ありがとうございました。 返事が大変遅くなり申し訳ございません。 ご指摘の通りちょっと難しく考えすぎていたようです。 なんとか解決いたしました。 今後ともよろしくお願いします。

関連するQ&A