- ベストアンサー
伝票全件印刷のマクロ
似たような質問があり、新たに質問するのは心苦しいのですが、何度挑戦してもうまくいかず、こちらで質問させていただきます。 エクセルで、一覧になっているデータを1人1枚で個別印刷と全件印刷する時のマクロについて知りたい。 (1)「計画書DB」というシートに1~100番までの顧客に関する情報が、入力されています。(氏名・住所など情報は多数) (2)「計画書」というシートが、1人1枚の紙を表示させる為のシートになっていて、全ての項目は、AQ1というセルを検索値としたVLOOKUP関数で表示させています。 (つくりたいマクロ) (1)個別印刷 「計画書」のA1~A52迄を1ページとして印刷 (2)全件印刷 「計画書」のA1~A52迄を1ページとして印刷した後、「計画書」のAQ1の数字が+1されて、次の方の計画書を印刷→の繰り返し。※「計画書DB」シートの番号(A列)がなくなったら印刷中止。 できるだけ具体的に教えていただけると大変助かります。。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
おそらく、これ↓で回答したマクロをちょっと変えるだけで、出来ると思うのですが http://oshiete.coneco.net/qa5403259.html 気になるのは、 「似たような質問があり、~ 何度挑戦してもうまくいかず」 の処です もしかして、上記のマクロの事でしょうか? であれば、どこがどううまくいかなかったのでしょうか?
その他の回答 (3)
- ASIMOV
- ベストアンサー率41% (982/2351)
>リストにデータがなくなったら(200までのリストでもデータがあるのが、100までだったら)ループを抜けて印刷がとまる方法 http://oshiete.coneco.net/qa5403259.html の owari = 200 を owari = worksheets("計画書DB").Range("A" & Rows.Count).End(xlUp).Row で、どうでしょうか
- hige_082
- ベストアンサー率50% (379/747)
>似たような質問があり、新たに質問するのは心苦しいのですが、何度挑戦してもうまくいかず 参考にした質問にリンクを貼って置くとよいと思います 躓いてる所をアドバイスしやすいので >(つくりたいマクロ) しかし、難しく考えすぎですよ '(1) sub 個別印刷() activesheet.printout end sub '(2) sub 全件印刷() dim i as integer for i = 1 To worksheets("計画書DB").range("a65536").end(xlup).row range("aq1").value = i activeSheet.printout end sub これで、出来ると思いますけど これじゃつまらないので一工夫 セルAQ2を使用して個別印刷を拡張します 番号3を印刷したい場合 AQ2へ3を入力しマクロを実行 番号2、5、9、25を印刷したい場合 AQ2へ2,5,9,25と入力しマクロを実行 番号10~20を印刷したい場合 AQ2へ10-20と入力しマクロを実行 複合もありです 番号2、5、9、25と10~20を印刷したい場合 AQ2へ2,5,9,10-20,25と入力 個々に印刷は","で区切り、連続で印刷は"-"で区切ります なので2,8,11,15-21,25,32,35-40,44,50もありです 全件を印刷したい場合は AQ2を空白にしてマクロを実行 Sub test() Dim Page1 As Variant Dim Page2 As Variant Dim i As Integer, x As Integer If Range("aq2").Value <> "" Then '個別印刷 If InStr(Range("aq2").Value, ",") > 0 Then Page1 = Split(Range("aq2").Value, ",") Else Page1 = Split(Range("aq2").Value) End If For i = 0 To UBound(Page1) If InStr(Page1(i), "-") > 0 Then Page2 = Split(Page1(i), "-") For x = Page2(0) To Page2(1) Range("aq1").Value = x ActiveSheet.PrintOut Next x Else Range("aq1").Value = Page1(i) ActiveSheet.PrintOut End If Next i Else '全件印刷 For i = 1 To Worksheets("計画書DB").Range("a65536").End(xlUp).Row Range("aq1").Value = i ActiveSheet.PrintOut Next i End If End Sub 興味があれば試してみて うまく動かなかったら無視してね
お礼
拡張版までありがとうございます。早速試させていただきます。
- ASIMOV
- ベストアンサー率41% (982/2351)
何点か疑問があります 1.(1)個別印刷をマクロでやる必要が有るのか? 2.もし、マクロでやるとした場合、顧客番号指定して(複数?)印刷すると思いますが、どうやって指定するのか 3.(2)全件印刷は(個別印刷も同じだと思いますが)AQ1の値を変えるだけでA1~A52のデーターは自動的に変わるんですよね?それを単純に印刷するだけで良いのでしょうか?
お礼
早速ありがとうございます。ご指摘の点にですが 1.個別印刷は、マクロでなくとも良いのですが、イメージとして 「全件印刷」ボタンと「個別印刷」ボタンを考えた為です。 2.顧客番号の指定は、AQ1の値を手入力します。 3.御記載いただいた通りで、AQ1の値を変えて、それを印刷する →次の値になって、印刷する。ということがしたいだけです。 何卒宜しくお願い致します。
お礼
質問内容の検索でうまくこちらの質問に辿りつくことができず、この度のご案内で知ることができました。 ご教示いただいたマクロで90%やりたいことができました。 一点、リストにデータがなくなったら(200までのリストでもデータがあるのが、100までだったら)ループを抜けて印刷がとまる方法が加われば完成となります。おそらくこれも既出でしょうからもう少し丁寧に検察してみます。