• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルデータベースからエクセル印刷用フォームに差込印刷したい。(No.667710類似質問))

エクセルデータベースからエクセル印刷用フォームに差込印刷したい

このQ&Aのポイント
  • エクセルの「顧客リスト」データベースから、エクセルの「顧客別シート」印刷用フォームの各セルに差込印刷する方法について教えてください。
  • データベースの件数が可変で、多数のユーザーが使用するため、個々のユーザーがVBAの編集をしなくてもいい方法を教えてください。
  • 「顧客リスト」白紙(定型データベース:列固定)と、「顧客別シート」(印刷用フォーム)を含むブックを公開し、個別にダウンロードしたデータを「顧客リスト」に貼り付けて、それを「顧客別シート」で印刷する方法を教えてください。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.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の前までに入れる(増やす)。

chirop
質問者

お礼

早速ありがとうございます!頑張ってやってみます。 VBAを最初から自分で記述するのは初めてなので、またお伺いするかもしれませんが、宜しくお願いします。

chirop
質問者

補足

まだ本番はやっていませんが、テストフォームで成功しました!(会社のプリンタの前で小躍りしてしまいました。) 今までやりたくてもやれなくて苦労していたケースなので、この応用でかなり効率化できそうです。 本当に助かりました。ありがとうございます。 午後から本番フォームでやってみますので、もし壁にぶちあったったら、また助けてください。 宜しくお願いします。

関連するQ&A