- ベストアンサー
(エクセルマクロ)DBの中で、選択した行のみ連続印刷する方法
「sheet 1」に、以下のような表があったとします。 A B C D E 1 番号 氏名 住所 金額 2 印刷 1 山田 千葉 10 3 印刷 2 小林 東京 20 4 3 伊藤 静岡 30 5 4 鈴木 山形 40 6 印刷 5 田中 栃木 50 「sheet2」には、請求書の雛形があるとします。 「A行」で「印刷」と入力されている行のみ、請求書に転記し、請求書を連続印刷してくれるマクロが知りたいです。 上記の例の場合、請求書が3枚印刷されることになります。 説明不足がありましたらご指摘ください。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
以前似たような質問に回答しました。 http://oshiete1.goo.ne.jp/qa3064424.html 今回のご質問との相違点は「A列に特定文字がある行だけ印刷する」ことだと思います。これはFor~Next文の中に条件判定の If oSht.Cells(idx, 1) = "印刷" Then ' 繰り返す処理 End If を追加すれば良いです。でも丸投げ回答したくないのでそこまでは具体的に書きません。ご自身でロジックを追加してみてください。 いずれにせよ質問&補足のシートは「例えば」の例ではないでしょうか。修正するのに多少なりともVBAの知識は必要ですよ。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
A.データシート 質問の表のようなシート B。請求書シート ガあって、A->Bに必要な行データを転記(=代入)し、印刷する。 印刷はRange("A1:H20").PrintOutのようにする。 ただ質問では (1)氏名ごとに考えて、複数明細(行)があることが見えないが、実際はあるのだと思いますがどうでしょう。 (2)印刷は必要の都度、小林さん分単独で印刷することが多いのかまたは、一斉作業で、山田・小林・田中を一遍に(別葉としても) 印刷するのか(臨時的な作業なのか、月次作業で一括全社作業なのか)書いてない。 前者では、抜き出し作業が起こるのだが、初等的な段階では、総なめ法(全行を山田かどうか比較して、該当を請求者シートに抜き出し)が良いでしょう。(ただし全データ行数が数千以下とする)。 VBAの学習が進めば、Findメソッドなどを使う。 後者なら、印刷+氏名でソートして、印刷行(印刷行がかたまるのだが)についてだけ、名前が変わるまで、請求書に転記し 名前が変わったとき印刷し、印刷した後、請求書の明細行・名前等をクリアすればよい。 ロジックはこんなものだと尾思うが、請求書の雛形が質問に出ておらず、コードは抱えないが、上記がヒントになってコードが書ける力があるのかな。
補足
回答ありがとうございます。 頂いた質問に回答します。 (1)氏名ごとに、複数明細(行)はありません。 一人につき1行です。 (2)印刷は山田・小林・田中を一遍に印刷したいと考えています。 (3)雛形は、下記のようなものを考えています。 「山田」の情報を「sheet2」に転記した場合 A B C D 1 1 2 山田 3 千葉 4 20 その他ご不明な点がありましたら、ご指摘お願いします。
補足
回答ありがとうございます! ご指摘の通り、「例えば」の例です 今日、明日と、頂いた意見を下に、考えてみます