• ベストアンサー

(エクセルマクロ)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枚印刷されることになります。 説明不足がありましたらご指摘ください。 よろしくお願いします。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

以前似たような質問に回答しました。 http://oshiete1.goo.ne.jp/qa3064424.html 今回のご質問との相違点は「A列に特定文字がある行だけ印刷する」ことだと思います。これはFor~Next文の中に条件判定の  If oSht.Cells(idx, 1) = "印刷" Then   ' 繰り返す処理  End If を追加すれば良いです。でも丸投げ回答したくないのでそこまでは具体的に書きません。ご自身でロジックを追加してみてください。 いずれにせよ質問&補足のシートは「例えば」の例ではないでしょうか。修正するのに多少なりともVBAの知識は必要ですよ。

yachiyoshi
質問者

補足

回答ありがとうございます! ご指摘の通り、「例えば」の例です 今日、明日と、頂いた意見を下に、考えてみます

その他の回答 (1)

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

A.データシート 質問の表のようなシート B。請求書シート ガあって、A->Bに必要な行データを転記(=代入)し、印刷する。 印刷はRange("A1:H20").PrintOutのようにする。 ただ質問では (1)氏名ごとに考えて、複数明細(行)があることが見えないが、実際はあるのだと思いますがどうでしょう。 (2)印刷は必要の都度、小林さん分単独で印刷することが多いのかまたは、一斉作業で、山田・小林・田中を一遍に(別葉としても) 印刷するのか(臨時的な作業なのか、月次作業で一括全社作業なのか)書いてない。 前者では、抜き出し作業が起こるのだが、初等的な段階では、総なめ法(全行を山田かどうか比較して、該当を請求者シートに抜き出し)が良いでしょう。(ただし全データ行数が数千以下とする)。 VBAの学習が進めば、Findメソッドなどを使う。 後者なら、印刷+氏名でソートして、印刷行(印刷行がかたまるのだが)についてだけ、名前が変わるまで、請求書に転記し 名前が変わったとき印刷し、印刷した後、請求書の明細行・名前等をクリアすればよい。 ロジックはこんなものだと尾思うが、請求書の雛形が質問に出ておらず、コードは抱えないが、上記がヒントになってコードが書ける力があるのかな。

yachiyoshi
質問者

補足

回答ありがとうございます。 頂いた質問に回答します。 (1)氏名ごとに、複数明細(行)はありません。  一人につき1行です。 (2)印刷は山田・小林・田中を一遍に印刷したいと考えています。 (3)雛形は、下記のようなものを考えています。  「山田」の情報を「sheet2」に転記した場合     A   B   C   D     1    1      2        山田     3            千葉 4                20 その他ご不明な点がありましたら、ご指摘お願いします。

関連するQ&A