- ベストアンサー
エクセルデータベースからエクセル印刷用フォームに差込印刷したい
- エクセルの「顧客リスト」データベースから、エクセルの「顧客別シート」印刷用フォームの各セルに差込印刷する方法について教えてください。
- データベースの件数が可変で、多数のユーザーが使用するため、個々のユーザーがVBAの編集をしなくてもいい方法を教えてください。
- 「顧客リスト」白紙(定型データベース:列固定)と、「顧客別シート」(印刷用フォーム)を含むブックを公開し、個別にダウンロードしたデータを「顧客リスト」に貼り付けて、それを「顧客別シート」で印刷する方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
No.667710に回答したものです。 あの時は、質問者が慣れていないと思い、VBAコードを減らそうと、変に気を使って、両者混合になってますが、VBA1本でやりたかったのですが。 過去になんども同じような質問に回答してます。 但し印刷用フォームシートの位置合わせは相当難しい試行錯誤になります。列・行設計もコツがあります。 Sub test01() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") '----顧客リストSh1シートの最終行を得る d = sh1.Range("A65536").End(xlUp).Row For i = 2 To d sh2.Cells(2, "B") = sh1.Cells(i, "A") sh2.Cells(2, "C") = sh1.Cells(i, "B") sh2.Range("a1:h40").PrintOut Next i End Sub が骨子です。 Worksheets("Sheet1")顧客リストシート名に変えること Worksheets("Sheet2")印刷用シートのシート名に変える For i = 2 To d顧客リストの顧客データの開始行で2を置換えること。 sh2.Range("a1:h40").PrintOut 印刷用シートの印刷範囲で置き変えること 最大の変更箇所は 項目----印刷シート----顧客リスト 氏名 B3セル B列 住所1 C3セル C列 住所2 D3セル D列 ・・・ のような対比表メモを作る。 それにより、例えば住所2なら sh2.Cells(3, "D") = sh1.Cells(i, "D") のように、項目数だけの行を作り、 sh2.Range("a1:h40").PrintOutの前までに入れる(増やす)。
お礼
早速ありがとうございます!頑張ってやってみます。 VBAを最初から自分で記述するのは初めてなので、またお伺いするかもしれませんが、宜しくお願いします。
補足
まだ本番はやっていませんが、テストフォームで成功しました!(会社のプリンタの前で小躍りしてしまいました。) 今までやりたくてもやれなくて苦労していたケースなので、この応用でかなり効率化できそうです。 本当に助かりました。ありがとうございます。 午後から本番フォームでやってみますので、もし壁にぶちあったったら、また助けてください。 宜しくお願いします。