excelの差込印刷で可視セルだけを対象にしたい(1135058の追加質問)

このQ&Aのポイント
  • excelで作成した差込印刷フォームで、オートフィルタで選択した可視セルのみを対象に印刷する方法を知りたい。
  • 現在の記述では、選択したデータ全体を印刷してしまうため、必要なセルのみを印刷する方法を模索している。
  • 顧客リストの白紙データベースにオートフィルタをかけて選択されたデータを「顧客別シート」に印刷するVBAコードの修正方法を教えてください。
回答を見る
  • ベストアンサー

excelの差込印刷で可視セルだけを対象にしたい(1135058の追加質問)

http://okweb.jp/kotaeru.php3?q=1135058の追加質問 上記で差込印刷出来るフォームを作成(VBA)したのですが、「オートフィルタで選択したデータだけを対象にして印刷したい。」という要望が殺到しています。1.「顧客リスト」白紙(定型データベース:列固定)でオートフィルタで選択されたデータ(可視セル)だけを対象にして2.「顧客別シート」(印刷用フォーム)を印刷する記述に変更したいのですが、どうしたらいいでしょうか? ★現在の記述★ Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("貼付用") Set sh2 = Worksheets("印刷用") d = sh1.Range("A65536").End(xlUp).Row For i = 3 To d sh2.Cells(1, "B") = sh1.Cells(i, "B") ~中略~ sh2.Cells(1, "W") = sh1.Cells(i, "W") sh2.Range("a2:ce44").PrintOut Next i End Sub ★以下、当初質問(1135058)の抜粋★ エクセルの「顧客リスト」データベースから、エクセルの「顧客別シート」印刷用フォームの各セルに差込印刷したい。「顧客別シート」は様々な理由からワードではなく、既にあるエクセルフォームにて行いたい。データベースの件数が可変で、多数のユーザーが使用するので、個々のユーザーはVBAの編集をしなくてもいいことが前提です。 1.「顧客リスト」白紙(定型データベース:列固定) 2.「顧客別シート」(印刷用フォーム) 3.「印刷用マクロ」 の3つが含まれたブックを公開し、個々のユーザーが個別にダウンロードしたデータ(行数可変)を1に貼り付け、貼り付けたデータを全て「顧客別シート」で印刷するイメージです。「顧客別シート」(印刷用フォーム)の余白は使用可能なので、そこに例えばその都度印刷範囲の行数やセル名等を入力してもらうことは可能です。

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

  • ベストアンサー
  • taocat
  • ベストアンサー率61% (191/310)
回答No.1

こんにちは。 提示のコードを利用するとした場合。 以下の●印のコードを追加して下さい。 -------------------------------------------- Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("貼付用") Set sh2 = Worksheets("印刷用") ●Dim Vcell As Range ●Set Vcell = Sh1.Cells.SpecialCells(xlCellTypeVisible) d = sh1.Range("A65536").End(xlUp).Row For i = 3 To d ●If Not Intersect(Vcell, sh1.Cells(i, "A")) Is Nothing Then sh2.Cells(1, "B") = sh1.Cells(i, "B") ~中略~ sh2.Cells(1, "W") = sh1.Cells(i, "W") sh2.Range("a2:ce44").PrintOut ●End if Next i End Sub ---------------------------------------------- 以上です。  

chirop
質問者

お礼

ありがとうございます!出来ました。 お恥ずかしながら、意味はわかっていませんが・・・。追々勉強していきます。 大変助かりました。

関連するQ&A

  • エクセルデータベースからエクセル印刷用フォームに差込印刷したい。(No.667710類似質問)

    エクセルの「顧客リスト」データベースから、エクセルの「顧客別シート」印刷用フォームの各セルに差込印刷したいです。「顧客別シート」は様々な理由からワードではなく、既にあるエクセルフォームにて行いたいです。 ※ここまではNo.667710と同様の内容です。⇒http://okweb.jp/kotaeru.php3?qid=667710 No.667710の要望だとデータ件数が固定であることが前提となっていますが、私の要望はデータベースの件数が可変で、多数のユーザーが使用するので、個々のユーザーはVBAの編集をしなくてもいいことが前提です。 1.「顧客リスト」白紙(定型データベース:列固定) 2.「顧客別シート」(印刷用フォーム) 3.「印刷用マクロ」 の3つが含まれたブックを公開し、個々のユーザーが個別にダウンロードしたデータ(行数可変)を1に貼り付け、貼り付けたデータを全て「顧客別シート」で印刷するイメージです。 「顧客別シート」(印刷用フォーム)の余白は使用可能なので、そこに例えばその都度印刷範囲の行数やセル名等を入力してもらうことは可能です。 VBAについては、自動作成したマクロを開いてその一部(セル名等)を編集する程度のスキルしかありません。出来ればVLOOKUP等の関数を併用し、マクロ部分は必要最小限であれば助かります。(なるべくシンプルな方法で) 皆様のお知恵を貸してください。何卒宜しくお願いします。

  • Excel差し込み印刷について追加質問です。

    質問番号:7534541 http://okwave.jp/qa/q7534541.html 上記質問で、わかりやすい回答をいただいたのですが 条件を追加して差し込み印刷するにはどうしたらいいのか わかりませんでしたので、追加で質問させていただきました。 Sheet1のB2セル以降をSheet2のAE5セルに表示させ、 Sheet2の表をSheet1のB列にあるデータ分だけ印刷するというもので、以下の回答をいただき 大変助かりました。 Private Sub CommandButton1_Click() Dim i As Long Dim ws As Worksheet Set ws = Worksheets("Sheet1") For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row ws.Cells(5, "AE") = Cells(i, 2) ws.PrintOut Next i End Sub この条件に追加で、 Sheet1 A2セル以降のデータを Sheet2 P30セルに差し込み印刷を行う Sheet1 A2セルのデータは、同シートのB2セルと同数のデータ量になります。 (B2~B20まで入力あれば、A2~A20まで入力します) 一つのコマンドボタンで、2つの条件を実行するとしたら 上記コードに、どのようなコードを追加すればよいのでしょうか? 質問を締め切った数日後に問題が発生してしまい、追加で質問するにはどうすればいいかわからず 新たに追加質問というかたちで質問させていただきました。 申し訳ございませんが、何卒ご教示のほどよろしくお願いします。

  • エクセルのデータを定型用紙に印刷 

    エクセルのデータシートの各行(1件づつ)を 一枚づつ定型の見積り書に印刷しようと思います。 sheet1が定型の見積書 sheet2がデータシートです。 sheet1のセル(12,3)にsheet2のセル(2,4),(3,4),(4,4) を印刷するには Sub 見積書印刷() Dim i As Long With Worksheets("sheet1") For i = 2 To 4 .Cells(12, 3).Value = Worksheets("sheet2").Cells(i, 4) .PrintOut Next i End With End Sub で、 できました。 データがsheet2でなく他のBOOKのsheetの場合 どのような式になるか 教えていただけませんか、お願いします。

  • エクセルで差込印刷(?)のようなこと

    たとえばSheet1にとある試合の結果(審判の名前や何点対何点だったかなど)を記入するフォームを作っておきます。 Sheet2には対戦する人の名前のリストを作ります。 そして、リストの順番にフォームの対戦する人を入れるセルだけを一枚一枚変えながら印刷することはできないですか? やりかとはどうであれ、とにかくWordの差込印刷みたいに特定のセルだけを 変えながら印刷できないでしょうか?

  • エクセルで差し込み印刷

    エクセルで差し込み印刷のようなことは出来ないでしょうか セルに氏名を入力することになっているシート(原紙) が有ります。 別シートに50人の氏名リストがありこれを使って50人分の 印刷を行いたいのですが簡単に行う方法を教えて下さい。

  • セルがある同じ行のリスト番号を反映して印刷する

    エクセル2003を使っています。 (1)顧客リストを作りました。 1.氏名 2.住所 3.電話番号 4.メールアドレス… (2)別シートに、この顧客データを1件につき1枚に印刷する印刷シートを作りました。 (1)にリスト番号を入力すると(2)のシートに反映するようにvlookupで反映できたのですが、「いちいちリスト番号を入力」しなければならず、可能であればリストにデータを入力している段階でリスト番号が反映されそのまま(2)のシートが印刷できるようにしたいのです。 何かいい方法はありませんか? 「セルがある行と同じ行にあるリスト番号を反映させる」という書き方でご理解いただけますか? よろしくお願いします。

  • エクセル VBAで差込印刷の指定方法を教えてください。

    こんにちは。大変お世話になっています。 エクセルVBAを使って差込印刷がしたいのです。 1000位あるレコードの中から、これとこれとこれ・・・というふうに選んで印刷させたいのです。 VLOOKUP関数を使わない方法で、ずっと以前にやったことがあるのですが、忘れてしまいました。 「aiu」というシートにリストがあるとして、転機して印刷したいフォーマットがあるシートを「kakiku」とします。 「aiu」のa列に数字の「1」が入力されてあれば、その行が対象となり、印刷が開始される、といったものです。 「kakiku」のai セルに、「aiu」のg列のデーターを入れたい場合、 n=worksheets("aiu").cells(i+1,2)=1then worksheets("kakiku").range("a1")=worksheets("kakiku").cells(i+1,7) このように書いたと思うのですが・・・動きません。 最初の1行になにか問題がありそうな気がするのですが・・・。 すみません、よろしくお願いします。

  • Excel差し込み印刷について

    Excel2010使用。 データ一覧から別シートにあるフォームに 差し込み印刷をしたいのですが、 サイトを調べたところ、imogasiさんの imogasi方式という方法にたどり着きました。 下記がすごく参考になるのですが、 http://okwave.jp/qa/q667710.html この中のimogasiさんの回答にある 関数とVBAの組み合わせで差し込む方法を 応用したいと考えています。 作成したいのは、 A4サイズの中に、4つの同じフォームが あって、そこにデータ一覧から順番に 印刷をしたいのですが、 1ページに4件分を印刷する方法が よくわかりません。 VBA初心者の自分なりに考えてみたのが 下記のコードになりますが、 やはり違うようで、 「nextで指定された変数が不正です」とでました。 今ひとつfor~nextが理解できていない私に どなたご教授いただけないでしょうか? Sub test01() Worksheets("sheet1").Activate For i1 = 2 To 30 Step 4 '300 For i2 = 3 To 30 Step 4 '300 For i3 = 4 To 30 Step 4 '300 For i4 = 5 To 30 Step 4 '300 Cells(1, "F") = i1 Cells(1, "H") = i2 Cells(8, "F") = i3 Cells(8, "H") = i4 Range("a1:H12").PrintOut Next i1 Next i2 Next i3 Next i4 End Sub ※実際のデータは、多くのデータ量になるので サンプルで試している段階です。

  • エクセルでエクセルへ差込印刷

    エクセルのデータベースを別シートのエクセル(雛形)へVBAで自動印刷させようと思うのですが、雛形の範囲がA4サイズの9分の1しか無く、シート単位で印刷設定すると余白だらけで、A4用紙がもったいないです。 たとえば、同じ雛形をA4サイズに9つ作成し、そこにデータベースの1~9を表示させ、印刷を行う。それ以降のデータも同じ雛形に9つ分のデータを表示させ、印刷を行うようにしたいのですが、可能でしょうか? VBAは、まだ、初歩的なことしか作成出来ない為、分かり易く、教えていただけると幸いです。

  • エクセルについて質問です。

    ユーザーフォームの使い方で、テキストボックスやコンボボックスのControlSourceを,フォームを開いたのとは別のシートのセルにあてたいんですけど、できますか? 同様に、コンボボックスのRowSourceのリストも、別のシートの値を拾いたいんです。 具体的に言えば、ユーザーフォームを開くのは、常に「Sheet1」であって、入力した内容を表示するのは「Sheet2」なのです。 コンボボックスのリストは本当は、「Sheet3」の値を拾いたいのです。 今はよくわからないので、全部「Sheet1」にリンク(?)させて、値を取得させるようにしてます。 それと、セルの数式の中に別のセルの数値を代入できますか? 例えば、あるセルの数式が「=Sheet2!A4」だとしましょう。 この場合の「Sheet2」の「2」に、例えば、ある別のセルの値を代入して、 「=Sheet3!A4」とかにしたいのです。 つまり「=Sheet”A1”!A4」みたいにして、「A1」のセルの値が 「2」、「3」に変われば元の数式も変わる、みたいに。 同じように、セルの範囲につけた名前や、リンクするファイルの名前も数式の変数に入れられるのでしょうか? とりあえず、セルの数式の中に、別のセルの値を”文字”や”数値”として入れたいのです。 ちょっと説明がわかりにくいかもしれないけど、教えて下さい。

専門家に質問してみよう