- ベストアンサー
エクセルで連続印刷
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>連番ボタンから印刷をすると、印刷物にC1セルの位置にnoが表示されて、一緒に印刷されてしまいます。 わざわざ印刷シートを見ながらマクロを実行しているからですね。 回答は,ご相談で掲示されている画像のシート(のC1セル)を操作する/が見えてる状態でマクロを使う事を想定しています。 それ以外のシーンへの応用は,基本,自力で願います。 >データを反映する速度よりもプリンターが読み込むスピードの方が早い 印刷シートの計算式が遅い(重い)と,そういう事が起こる場合もあります。 適当な時間を指定して待ちを入れます。 sub 範囲を指定して印刷r1() dim s as long dim e as long dim i as long on error resume next s = inputbox("Start") if s = 0 then exit sub e = inputbox("End") if e = 0 then exit sub for i = s to e worksheets("リストのシート").range("C1") = i ’適宜修正 application.wait now + timeserial(0,0,10) ’適宜修正 worksheets("印刷シート").printout next i end sub
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
方法1) ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub プラス1して印刷() range("C1") = range("C1") + 1 worksheets("印刷シート").printout ’適宜修正 end sub ファイルメニューから終了してエクセルに戻る C1セルの横にオートシェイプの図形等を1個配置する 右クリックしてマクロの登録で、今のマクロを登録する クリックするたび、C1の数字を1つ増やし印刷してくれる。 方法2) ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub 範囲を指定して印刷() dim s as long dim e as long dim i as long on error resume next s = inputbox("Start") if s = 0 then exit sub e = inputbox("End") if e = 0 then exit sub for i = s to e range("C1") = i worksheets("印刷シート").printout next i end sub ファイルメニューから終了してエクセルに戻る シート上にオートシェイプの図形等を1個配置する 右クリックしてマクロの登録で、今のマクロを登録する クリックすると1から10のように指定し、印刷してくれる。 #参考 方法3) 印刷シートに印刷帳票を沢山用意する 各帳票には、数式を使って指定の開始番号から+1ずつした数字のデータを参照してくるように数式を準備する 印刷範囲の設定を名前の定義を使い、指定した数分のセル範囲が印刷範囲となるように設定する http://miyahorinn.fc2web.com/tips/s_07_10.html 開始番号と、そこから幾つ印刷したいのかそれぞれセルに記入し、印刷させる
補足
回答まことにありがとうございます。 当方の環境にもっと合っていたのが、2の方法でしたので方法2)を試してみました。 連番ボタンから印刷をすると、印刷物にC1セルの位置にnoが表示されて、一緒に印刷されてしまいます。 また、15枚程度を連続して印刷するとデータを反映する速度よりもプリンターが読み込むスピードの方が早いのか、同じ印刷物が出てきてしまいました。 プリンターが読み込むスピードを少し遅らせること等は可能でしょうか もしよろしければ、フォローをお願いします。
お礼
印刷シートを見ながらするとそのような現象がおこるとは知りませんでした。お教えありがとうございます。計算式の遅さの問題ですが、新たなプログラムで複数シートを問題なく打ち出すことができました。 回答&フォローまことにありがとうございました。