• ベストアンサー

VBAを用いて繰り返し自動的に印刷するにはどうしたら良いのですか

VBAを用いて繰り返し自動的に印刷するにはどうしたら良いのですか?ループコードって何? エクセルで作った納品書、件数が数百件あっても自動的にある件数全て打ち出せるようにしたいのですが。。。

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

  • ベストアンサー
  • taseki
  • ベストアンサー率66% (155/233)
回答No.5

つまりこういうことですか? ●"シート2"は、以下のような感じ。 ━━━━━━┳━━┳━━━ 受注ナンバー ┃顧客┃請求額 ━━━━━━╋━━╋━━━       1001┃ A社┃10000 ━━━━━━╋━━╋━━━       1002┃ B社┃20000 ━━━━━━╋━━╋━━━       1003┃ C社┃50000 ━━━━━━╋━━╋━━━ ●"シート1"の特定のセルに、たとえば「1001」と入力すると、上記の表から得た「A社」、「10000円」などという情報が各欄に表示される。 ●上記"シート1"の特定のセルに「1001」を入力して印刷、「1002」を入力して印刷、…、という一連の繰り返し作業を自動で行わせたい。 以上でよければ、以下のようにできます。 Public Sub PrintAll() Dim rngOrderNoArray As Range Dim rngOrderNoForm As Range Dim rngOrderNo As Range Set rngOrderNoArray = Worksheets("シート2").Range("A2:A100") ★"シート2"の受注ナンバーの範囲 Set rngOrderNoForm = Worksheets("シート1").Range("A1") ★"シート1"の入力欄 For Each rngOrderNo In rngOrderNoArray rngOrderNoForm.Value = rngOrderNo.Value Worksheets("シート1").PrintOut Next End Sub あくまでもサンプルです。上記を実行すると冒頭の動作を「A2:A100」など設定した分だけ繰り返します。途中でキャンセルできるようにしたり、などは必要に応じて追加してください。

puripuribouya
質問者

お礼

本当に本当にありがとうございました。 頑張ってチャレンジします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

Range(Cells(x,y),Cells(z,u)).PrintOutがポイントです。 印刷する範囲がいつも一定であればx、y、z、uは定数字です。 変わるなら、プログラム内で計算や場所(セル範囲)の表を持つ。 納品書の定位置に受注シートデータから持ってくるのは (別質問に答えたものですが)下記の「データを移す」のところが参考に なるでしょう。 ほかにも2シートの扱いなど参考になるでしょう。応用が広く、すっきり していると自負しています。(全体は他の問題用ですから気にしないで) Sub test01() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("sheet1") Set sh2 = Worksheets("sheet2") '最下行数を知る d = sh1.Range("A65536").End(xlUp).Row MsgBox d j = 1 'sheet2の先頭行 m = "XXX" 'Sheet1の第1行以外の値をセット For i = 1 To d '---A列直前の行と変わったか If sh1.Cells(i, "A") = m Then Else '----変わったときA,B列をSheet2へ移す sh2.Cells(j, "A") = sh1.Cells(i, "A")  ’データを移す sh2.Cells(j, "B") = sh1.Cells(i, "B") m = sh1.Cells(i, "A") j = j + 1 'Sheet2の次行へ End If Next i End Sub 仕事にVBAを使うには、中級以上のスキルがいります。覚悟の程を。

puripuribouya
質問者

お礼

本当に本当にありがとうございました。 頑張ってチャレンジします。

全文を見る
すると、全ての回答が全文表示されます。
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.4

>シート1の納品書内の受注ナンバーを入力する 番号の入力は納品書の「セル」と言うことでしょうか? >シート2のデーターが自動で入る 納品書の「受注ナンバー」に入力された番号を基に機能するのですね? この動作はボタンで実行するのですか? それとも、シートのイベント(自動)ですか? 印刷は手動? --------------------------------- 基本的には、納品書作成(記入)マクロに受注番号を渡して納品書を作成して印刷、の繰返しをすれば良いだけです。 注番が連番の数値なら簡単ですが、それ以外なら面倒になります。 sub 連続印刷 ’受注番号指定処理(開始番号・終了番号設定) do 注番作成処理 call 請求書作成(注番) 印刷処理 終了判定処理 Loop End Sub のような流れになります。

puripuribouya
質問者

お礼

本当に本当にありがとうございました。 頑張ってチャレンジします。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 ・シート1に納品書のフォームがある。 ・シート2には数100件以上入る顧客注文リスト表がある。 ・シート1の納品書に、シート2のデーターが自動で入るようになっている。 ・注文リスト内全件が自動に納品書に反映され印刷したい。 結局、これだけの内容からですと、現状では、残念ながら、VBAでの解決にまでには結びつかないのではないかと思います。 ここで回答できる範囲としては、コーディングのトラブルやいくつかのピンポイントで示せるテクニックを書くだけで、初期からコードを書くものは限られています。今、具体的なコーディングでお困りのことがあれば、お教えできるかと思いますが、そうでないとしたら、私には不可能です。

puripuribouya
質問者

お礼

お手数をおかけいたしました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 単純に回答が付けられないのは、「打ち出す」ものは、ひとつのシートの中のものか、それとも複数のシート全なのかどうかということですね。 もし、ひとつのシートの中のものだとすれば、同じものをプリントアウトするわけではありませんから、当然、内容が変わっていくはずです。それら、プリントアウトする前段階の部分がはっきりしないと、Do ~ While などと教えても何も役に立たないような気がします。

puripuribouya
質問者

補足

ありがとうございます。 シート1に納品書のフォームがあり、シート2には数100件以上は入る顧客注文リスト表があります。シート1の納品書内の受注ナンバーを入力する事により、シート2のデーターが反映されシート1の納品書にデーターが自動で入るようにしました。件数は日によりまちまちですが(数件から数100件)注文リスト内全件が自動に納品書に反映され印刷したいと思います。 全くの素人でチャレンジしているので説明もうまくできませんがどうぞよろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • taseki
  • ベストアンサー率66% (155/233)
回答No.1

単純に印刷するにはPrintOutメソッドを使います。 Worksheets("納品書1").PrintOut 複数のシートなら、 Sheets(Array("納品書1", "納品書2", "…")).PrintOut とか。 もちろん「すべてのシート」だとか、あるフォルダの中のファイルをすべて、順番に開いていって印刷、ということも可能です。 そういう場合には、For 文などで必要な分だけ同じことを繰り返します。これがループです。

puripuribouya
質問者

お礼

早速ご回答いただきましてありがとうございました。 参考にさせていただきたいと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAによる自動印刷について

    エクセル初心者です。VBAのことで教えていただきたいです。 VBAを使って項目ごとにオートフィルタ→抽出されたものを印刷というのを、したいのですがどういったコードを書けばよいか、調べてみましたがしっくりくるものがありませんでした。 イメージ的には名前毎にフィルターをかけて、 その結果を印刷したいのですが、どのようなコードになるのでしょうか。 全部で2000行くらいあるので、いちいちフィルターをかけて→印刷 を手でしていると時間がかかります。(名前も重複なしで1000以上あるので、、、) フィルター→印刷、次の名前でフィルター→印刷を自動化するには どうすればよいのでしょうか。 説明が下手ですみませんが、できれば実際のどういったコードになるのかを教えていただきたいです。

  • Excel2002VBAを使って集計値を自動入力

    Excel2002を使用しています。 コード  件数  区分 201    1    1 202    2    3 201    1    5 201    2    2 202    1    4 203    4    1 201    2    1 202    3    5 sheet1に“コード”をセルA1とする上記のような リストがあるとして、sheet2のセルA1に コード201の区分1と2の件数の計5と コード202の区分3と4の件数の計3の合計8を Excel2002VBAを使って自動入力したいのですが 書き方が思いつきません。 ご教授よろしくお願いします。

  • VBA 印刷について教えてください

    シートにデータを日ごと入力しています。そのデータを印刷をかけたいのですが、その日ごとに件数が異なります。 1行目は、項目 その下からデータになります。 件数は200件の時もあれば、300件のときも・・・ そこで、VBAを利用して印刷をしたいのですが、1枚に40件印刷をしたいのです。 1行は項目、40行データ よって一枚に41入る事のなります。 見出しの設定はわかります。 2枚目は 42から82 3枚目は 83から122 という感じです 行は、kまで 用紙はA4横です どのようにVBAを組めばよろしいでしょうか? よろしくお願いいたします。

  • エクセル VBA 条件つきの印刷

    エクセルVBAにおいて、 例えば「セルA1が空白でないシートすべてを印刷する」 このようなコードは可能でしょうか? よろしくお願いします。 (エクセル2000)

  • VBAとデータの転記について

    今エクセル2003で、以下の上段画像のようなエクセルデータを作成しました。 上段(シート1)が、各商品に対する評価表なのですが、 そこに評価のあった件数が入力されています。 今、シート1の商品名から評価の不可までを、 VBAでシート2に以下のように転記をしたいのです。 先月はたまたま26件だったのですが、 毎月の商品の件数が、決まっていないので、連番記載とセルごとの処理 ループの使い方がよくわかりません。 評価欄は1件でも件数があれば、○印を転記して、空白はそのままで 転記したいのです。 データが多くなるにつれ手作業が大変になってきました。 VBAがまったくわからず、申し訳ありませんが よろしくお願いします。

  • 印刷枚数をセルの数値としたい

    どうか、ご教授お願いします。 簡単なマクロは組めますがVBAは初心者です。 エクセルで作成している、毎日提出する書類があり、フォーマットが決まっています。 日によって、件数が違いますので10件あれば10枚印刷、2件であれば2枚と印刷枚数を自動的に変更できますか? 別の表で一覧表を作り、一枚のフォーマットにはVLOOK関数を使用して反映させています。ですから今日の件数という数値はその別表のセルでcounta関数で数値は出ます。 その数値を終了ページに反映させるということはできますか? 質問もつたないですがよろしくお願いします

  • エクセル VBA 飛ぶセルの自動連番のつけ方

    エクセル VBA で添付画像のように1枚に30までの自動連番、 セルに1~150と入力すれば自動採番で5枚印刷できるような VBAをご教示下さい。 番号は001のような3ケタの場合でお願いします。

  • excel2013 vba のコードの記述を印刷

    お世話になります。excel vba のコードの記述を印刷を印刷するフリーソフトでvba2htmlがありますが、 これがexcel2013にインポートできなくて困っています。 ご存知のかたいらっしゃいましたらご教示願います。

  • 毎朝8:30にエクセル自動起動してVBA自動開始したい

    お世話になります。 毎朝8:30にエクセル自動起動してVBA自動開始したい という件で質問です。 エクセル限定が大前提です。他の処理方法は採用できない状況下です。  では本題。 毎朝8:30にパソコンの電源が入っただけの状態で、作業者は画面を見ているだけとします。そこでエクセルが自動で起動し、VBAが自動で動いて処理をするようにしたいのです。 ちなみに、VBA初心者でコピーペースト程度が分かります。よろしくお願いいたします。 (web検索で数時間探しましたが、理解できませんでした。)

  • エクセルVBAでPDFを1枚目のみ大量に印刷したい

    エクセルVBAでPDFを大量に印刷したい PDFファイルが6000件くらいあって Aというホルダーに1.pdf,2.pdf ・・・6000.pdfといった形で保存しております エクセルのA列に必要な番号を入力し50~60件印刷します A列には必要なファイル番号のみ入れていきます 2,3,6,100,210といった形でA列に必要なデータを入れて VBAで起動させるとA1から順番にアクティブプリンターで印刷したいと おもっています。 どのようなVBAにすればいいのかわかりません。 ループで繰り返しになる感じになると思います N=N+1といった感じでA1セル.PDF 印刷 A2セル.PDF           印刷 A3セル.PDF           印刷 といった形でAに入る数字は毎回違ってきます 番号はあるけどファイルがない場合はその番号を B1列から順番に摘出するようなものを考えてます 印刷については、全部1ページのみ印刷をします。1PDFで4ページあっても先頭の1ページのみ印刷です。 どなたかお忙しいとは思いますがご教示いただけませんか よろしくお願いいたします