- ベストアンサー
エクセル 規定のフォーマットに別シートのデータを繰り返し印刷
- エクセルの2000で、別シートのデータを規定のフォーマットに繰り返し印刷する方法について質問します。
- 現在は200社のデータを各シートに分割入力しており、入力・管理・印刷が面倒です。そこで、入力データを1ページにまとめて、別シートで表示や印刷する方法を考えています。
- 具体的な方法としては、1つのシートで200件のデータをコードで管理し、別のシートで会社コードを入力すると対応するデータを表示するという形式です。質問は、この形式で一度に複数の会社を印刷する方法についてです。マクロやVBAの活用方法について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
私も何度も回答してます。 例データ Sheet1はデータシート A1:E5 行番号 氏名 住所 年齢 印刷 1 大田 東京都 34 p 2 山田 横浜市 36 3 上村 千葉市 15 p 4 木村 静岡市 16 p Sheet2は印刷シート そこに行って A1に「1」と入力(A1はどこか目立たないところでもよい) あるいは第1列か第1列を遊び行にしてしまう。 氏名を印刷したいセルに =VLOOKUP($A$1,Sheet1!$A$1:$C$100,2,FALSE) 住所をセットしたいセルに =VLOOKUP($A$1,Sheet1!$A$1:$C$100,3,FALSE) これは判りますね。他の項目も好きなところへ、第3引数だけ変えて 式をセット。 (印刷) ALTきを押しつつF11,I,Mを順次押すと、標準モジュール画面になる。 そこへ下記をコピペする。 骨子ですが Sub test01() Range("A2:J20").PrintOut End Sub ーー これでは今の1ページしか印刷しない。 VBAでA1を変化させる。するとSheet2の中身が変わります。 ●これを第2行から最下行まで繰り返し ●F列がブランクで無い行だけを印刷する に改良すると下記コードになる。 ーー 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 For i = 2 To d If sh1.Cells(i - 1, "E") <> "" Then sh2.Cells(1, "A") = i - 1 sh2.Range("A2:H20").PrintOut End If Next i End Sub ーー これをF5を押して実行する。 このほかにも、ボタンをクリックすると実行する、などの方法があるので、勉強してください。 ーーー 印刷シートのSheet2に関して、書式、行高、列幅、印刷設定についてはVBAでやってません。手動でやってください。VBA熟練者には、型破りですが、そのほうが初心者には判りやすく、すぐ応用(自分で自由にできる)が効くからです。 わざわざ関数VLOOKUPを使うことを残しているのも、そういう見地からです。 自分流にチュニングが必要ですが(sh2.Range("A2:H20").PrintOutの印刷範囲など)推測して、テストしてみてください。
その他の回答 (1)
- OsieteG00
- ベストアンサー率35% (777/2173)
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1735364 Wordの差し込み印刷を使ってExcelのデータを印刷にした方が簡単のような。
お礼
早速のご回答ありがとうございます。 Wordの差し込み印刷ですか・・・考えてませんでした。 そうですね。そういうこともできますね。 今回は印刷したり、しなかったりということもあるので、これは見送りますが、また別の機会に参考にさせていただきます。 ありがとうございました。m(__)m
お礼
早速のご回答ありがとうございます。 丁寧な説明ありがとうございます。 早速試してみます。また経過をご報告します。 まずはお礼まで・・ ありがとうございました。m(__)m