Excel差し込み印刷の条件追加についての質問

このQ&Aのポイント
  • Excelの差し込み印刷に条件を追加する方法について質問します。
  • Sheet1のB2セル以降をSheet2のAE5セルに表示させ、Sheet2の表をSheet1のB列にあるデータ分だけ印刷することができます。さらに、Sheet1のA2セル以降のデータをSheet2のP30セルに差し込み印刷する方法を教えてください。
  • 数日前に質問を締め切った後、問題が発生しました。新たに追加質問として、コマンドボタンで2つの条件を実行するために必要なコードを教えてください。
回答を見る
  • ベストアンサー

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つの条件を実行するとしたら 上記コードに、どのようなコードを追加すればよいのでしょうか? 質問を締め切った数日後に問題が発生してしまい、追加で質問するにはどうすればいいかわからず 新たに追加質問というかたちで質問させていただきました。 申し訳ございませんが、何卒ご教示のほどよろしくお願いします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

言葉のご説明と実際のマクロが食い違ってますが、とりあえずそのマクロで動いているなら ws.Cells(5, "AE") = Cells(i, 2) に続けて ws.range("P30") = Cells(i, "A") と追加すればいいですよ。

naozen
質問者

お礼

お礼が遅くなりました。 ご教授いただき、ありがとうございました(^-^)/

naozen
質問者

補足

ご指摘ありがとうございます。 食い違っている部分と思われるのは以下の部分かと思いますが Set ws = Worksheets("Sheet1") 正しくは Set ws = Worksheets("Sheet2") となります。入力誤りでした。。。

関連するQ&A

  • 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に貼り付け、貼り付けたデータを全て「顧客別シート」で印刷するイメージです。「顧客別シート」(印刷用フォーム)の余白は使用可能なので、そこに例えばその都度印刷範囲の行数やセル名等を入力してもらうことは可能です。

  • Excel マクロの一部改造の方法を教えて下さい。

    先日、tom04さんから下記のマクロを教えていただきました。 sheet1のセルA1にsheet2のセルA1からA??までの項目を順次入れ、sheet1を印刷するものです。 これに、追加でsheet1のセルB1にも項目を追加したいのです、データーはsheet2のB1から入れておくこととします。 下記のマクロを教えて下さった、tom04さんの目にとまれば幸いですが、内容を理解して頂いた方ならどなたでも回答頂ければ幸いです。よろしくお願い致します。 改造して頂きたいマクロは下記です。 Sub test() 'この行から Dim i As Long Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") '←Sheet名は適宜変更してください Set ws2 = Worksheets("sheet2") '←こちらのSheet名も適宜変更 For i = 1 To ws2.Cells(Rows.Count, 1).End(xlUp).Row ws1.Range("A1") = ws2.Cells(i, 1) '←Sheet1のA1セルに名前を表示 ws1.PrintOut Next i End Sub 'この行まで

  • 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 ※実際のデータは、多くのデータ量になるので サンプルで試している段階です。

  • エクセル内で、一度の印刷で2つのセルに差し込み印刷をする方法

    エクセルで差し込み印刷のマクロを組んでいます。現在は下の様に宛名を名簿に書いてある順番に印刷していくマクロですが、これに「住所」のシートを作成し、B4のセルに「住所」の内容も印刷できるようにしたいのです。つまり、一度の印刷で2つのセルに差し込み印刷をしたいのです。そのようなことは可能でしょうか。 Sub 封筒印刷() Dim i As Long i = Sheets("原本").Range("A65536").End(xlUp).Row Sheets("宛名").Select ActiveSheet.PageSetup.PrintArea = "$A$1:$E$14" For i = 1 To i Range("B5").Value = Sheets("原本").Cells(i, 1).Value ActiveSheet.PrintOut Next End Sub

  • Excel2003プリンター指定してPDF作成

    シート名【データ】のセル【AF5】 に シート名【製造番号】のB列の値を割り当てて、1部ずつ印刷しています。 コマンドボタンは、【製造番号】シートに設置しています。 Private Sub CommandButton1_Click() Dim i As Long Dim ws As Worksheet Set ws = Worksheets("データ") For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row ws.Cells(5, "AF") = Cells(i, 2) ws.PrintOut Next i End Sub コマンドボタンを増設し、そのコマンドボタンでプリンターを指定してPDF作成を行いたいと思っています。 以下の記述にて【プリンターを指定して印刷】まではなんとかこぎつけました。 指定するプリンターは、AdobePDFです。 このときに作成されるPDFのファイル名を【製造番号】シートのB列の値で保存していきたいのですが、 Private Sub CommandButton2_Click() Dim i As Long Dim ws As Worksheet Set ws = Worksheets("データ") For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row ws.Cells(5, "AF") = Cells(i, 2) ws.PrintOut , ActivePrinter:="Adobe PDF" Next i End Sub この状態ですと、Excelのファイル名がPDFのファイル名として適用されます。 しかし、ファイル名は固定されてしまいエラー検出『同一ファイル名があります 等』されずにそのまま上書き保存され続けるため、最終的には一番最後に差し込みされたセルの値でPDFファイルが1つだけ作成されます。 仮想プリンターAdobePDFを指定してPDFを作成する場合、ファイル名を指定することは無理なのでしょうか? やりたいこととしては 差し込みされる値の数だけPDFファイルを作成する。 これが達成されれば、過程はどんな方法でもいいのですが… 良き方法をご存知の方いらっしゃいましたら、何卒ご教示くださいませ。 よろしくお願い致します。

  • エクセル マクロの設定方法について

    差込印刷でSheet1に作成した名簿データにより、sheet2に作成しているデータへ差込印刷をしています。現在、次のようなマクロを組んで名簿の件数に合わせて、For = 2 To 500 Step 8を修正しながら、印刷しています。できたら、名簿の件数の増減に関係なく印刷できるようになればと考えています。始めたばかりのマクロ初心者です。よろしくご教授ください。お願いします。 Dim i As Long Dim ws1 As Worksheet, ws2 As Worksheet Set ws1 = sheets(″sheet1″) Set ws2 = sheets(″sheet2″) For i = 2 To 500 Step 8 ws2 .Range(″A1″).Value = ws1.Cells(i+1,2).Value ws2 .Range(″A7″).Value = ws1.Cells(i+2,2).Value ws2 .Range(″A13″).Value = ws1.Cells(i+3,2).Value ws2 .Range(″A19″).Value = ws1.Cells(i+4,2).Value ws2 .Range(″F1″).Value = ws1.Cells(i+5,2).Value ws2 .Range(″F7″).Value = ws1.Cells(i+6,2).Value ws2 .Range(″F13″).Value = ws1.Cells(i+7,2).Value ws2 .Range(″F19″).Value = ws1.Cells(i+8,2).Value DoEvents ws2.PrintOut Next End Subws2 .Range(″F1″).Value = ws1.Cells(i+5,2).Value ネット等で調べて、上記のようなマクロで作業してます。(マクロの設定方法が間違っているところがあると思いますが?)

  • Excel VBA 連番印刷

    昨日以下の質問をさせていただいた者です。 http://okwave.jp/qa/q8349562.html こちらで教えていただいた以下のコードに、 J2のセルに連番を振るコードを付け足したいと思い、 同じくこちらのサイトの過去の履歴にあった以下コードを参考にとやってみているのですが、 Next で指定された変数の参照が無効です。と言われてしまいます… 印刷部数の指定はいらず、sheet印刷のJ2セルに1から始まる連番を振りたいのです。 どのように修正をしたらいいのかご教示願います。 Sub Sample4() Dim i As Long, endRow1 As Long, endRow2 As Long, myArea1 As Range, myArea2 As Range Dim wS1 As Worksheet, wS2 As Worksheet, wS3 As Worksheet Set wS1 = Worksheets("DB") Set wS2 = Worksheets("印刷") Set wS3 = Worksheets("Sheet3") endRow1 = wS1.Cells(Rows.Count, "A").End(xlUp).Row Range(wS1.Cells(1, "A"), wS1.Cells(endRow1, "A")).AdvancedFilter Action:=xlFilterInPlace, unique:=True wS1.Range("A:A").Copy wS3.Range("A1") wS1.ShowAllData For i = 2 To wS3.Cells(Rows.Count, "A").End(xlUp).Row endRow2 = wS2.Cells(Rows.Count, "B").End(xlUp).Row If endRow2 > 9 Then Range(wS2.Cells(10, "B"), wS2.Cells(endRow2, "H")).ClearContents Range(wS2.Cells(10, "J"), wS2.Cells(endRow2, "J")).ClearContents End If wS1.Range("A1").AutoFilter field:=1, Criteria1:=wS3.Cells(i, "A") wS2.Range("B6") = wS3.Cells(i, "A") Set myArea1 = Range(wS1.Cells(2, "B"), wS1.Cells(endRow1, "H")).SpecialCells(xlCellTypeVisible) Set myArea2 = Range(wS1.Cells(2, "I"), wS1.Cells(endRow1, "I")).SpecialCells(xlCellTypeVisible) myArea1.Copy wS2.Activate ActiveSheet.Range("B10").Select Selection.PasteSpecial Paste:=xlPasteValues myArea2.Copy wS2.Activate ActiveSheet.Range("J10").Select Selection.PasteSpecial Paste:=xlPasteValues endRow2 = wS2.Cells(Rows.Count, "B").End(xlUp).Row 'Range(wS2.Cells(1, "A"), wS2.Cells(endRow2, "J")).PrintOut Next i wS1.AutoFilterMode = False wS3.Cells.Clear End Sub 連番印刷のコード Sub NumberPrint() Dim idx As Integer Dim res  res = Application.InputBox("印刷部数を入力してください", Type:=1)  If res > 0 Then   For idx = 1 To res    Range("AW3").Value = idx    ActiveSheet.PrintOut   Next idx  End If End Sub

  • Wordの(Excelデータの)差込印刷について

    Wordで作った表の中にExcelデータを差込印刷します。 差し込むデータの入っているワークシートが左端にあること(Sheet1の位置ですね)が条件のように書いてあるものがあり、実際試してみるとそのようなのですが。 Sheet2、Sheet3にも同類のデータが入っていてそれも差込印刷したい時にはどうすればよいのでしょう?たとえばSheet3を差し込みデータとして直接指定することはできないのでしょうか??

  • 差込印刷でのExcelシートの区別。

    こんにちわ。 maybe-snowと申します。 初心者で、簡単な質問でしたら大変恐れ入りますが、宜しくお願い致します。 今回、Wordで差込みを行いたくて作業を行っているんですが、元となるExcelシートの区別が出来ません。 詳細は以下です・・・ 差込先のWORDファイルは複数(仮にファイルA.B.Cとします。) それに対し、差込元のExcelファイルは一つ。(仮にシート名をD.E.Fとします。) ですので、WORDの差込印刷へルパーのデータファイル名はA.B.Cとも同一。 それで、下記のように差し込みたいのです。 WORDファイルAでの差込→EXCELシートD 同様にB→E、C→F 現在の状況ですが、どのWORDファイルから差込を行おうとしても、EXCELのDシートを呼びに行きます。(ですので、入力項目にズレが生じる為、WORDファイルB・Cでは正常に差し込めません。。) という事で、差込際のデータファイルをシート指定する方法を教えて頂きたいです!! 質問文の内容が解りづらくて申しわけありません。 補足が必要であれば是非、させて頂きますので、宜しくお願い致します。m(__)m

  • 至急なんです~(>_<)!エクセル差込印刷(連番とんでる編)

    過去の質問で差込印刷などの要領はわかったのですが、同じような質問がないのでこちらから質問させていただきます。 sheet1に元データ sheet2が帳票用(印刷用)となってます。 sheet1のA列に連番が入ってますが、 こちらはA1=1、A2=空欄、A3=2、A4=3 などとランダムな行にに連番が入ってます。 B列に会員番号が入ってます。 なのでA列の連番の1.2.3.4.5.6のすぐ右横のセルB列(会員番号)をsheet2のA1セルに入れて連続印刷していきたいのです。 2500人ほどの会員への手紙を明日中に発送しなくちゃいけなくて困ってます。 ちなみに「sheet2」は「A1」のセルにさえ会員番号が入れば出来上がるようになってます。 どうかわかる方がいましたらお力添え宜しくお願いいたします。

専門家に質問してみよう