連続印刷について

このQ&Aのポイント
  • 顧客名簿を作成し連続印刷により、市販されているようなアドレス帳のレイアウトで印刷したいのですが、印刷設定がうまくできません。
  • 別シートに印刷用のレイアウトを作成し、VLOOKUP関数を使用して顧客名簿を自動的に埋め込んでいます。
  • 初心者による作成ですが、説明が分かりにくくて申し訳ありません。ご教授いただけないでしょうか?
回答を見る
  • ベストアンサー

連続印刷について

顧客名簿を作成し連続印刷により、市販されているようなアドレス帳の レイアウトで印刷したいのですが、以下の様に13人分の印刷をすると 次の連続印刷では1つ繰り上がって、印刷されるだけとなってしまいました。 次ページの印刷からは、14行めから更にその次では28行目からと 印刷設定をしたいのですが、どうすれば宜しいのでしょうか? 別シートに印刷用のレイアウトをVLOOKUPで作成し、更に別シートで印刷設定を行っています。 初心者なりに見よう見まねで作ってみたのですが・・・・ 説明が下手で分かりにくく申し訳ありません。 護教授宜しくお願い致します。 Sub 連続印刷1() ' Dim mycounter As Integer Dim sita1 As Integer Dim migi1 As Integer mycounter = 1 sita1 = Sheets("設定").Cells(4, 2) migi1 = Sheets("設定").Cells(5, 2) For mycounter = 1 To 5 Sheets("顧客名簿").Select Range("O2").Value = Sheets("住所録").Cells(mycounter + 1, 1) Range("O6").Value = Sheets("住所録").Cells(mycounter + 2, 1) Range("O10").Value = Sheets("住所録").Cells(mycounter + 3, 1) Range("O14").Value = Sheets("住所録").Cells(mycounter + 4, 1) Range("O18").Value = Sheets("住所録").Cells(mycounter + 5, 1) Range("O22").Value = Sheets("住所録").Cells(mycounter + 6, 1) Range("O26").Value = Sheets("住所録").Cells(mycounter + 7, 1) Range("O30").Value = Sheets("住所録").Cells(mycounter + 8, 1) Range("O34").Value = Sheets("住所録").Cells(mycounter + 9, 1) Range("O38").Value = Sheets("住所録").Cells(mycounter + 10, 1) Range("O42").Value = Sheets("住所録").Cells(mycounter + 11, 1) Range("O46").Value = Sheets("住所録").Cells(mycounter + 12, 1) Range("O50").Value = Sheets("住所録").Cells(mycounter + 13, 1) Range(Cells(1, 1), Cells(sita1, migi1)).Select Selection.PrintOut Copies:=Sheets("設定").Cells(6, 2) Next ' End Sub

  • Jize
  • お礼率28% (2/7)

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

  • ベストアンサー
  • umejas
  • ベストアンサー率28% (9/32)
回答No.1

こんにちは。 ちょっとやりたいことが詳しくわからないのですが、考え方の参考にしてみてください。 mycounterは1から5まで、1ずつ変化するだけなので、 Range("O2").Value = Sheets("住所録").Cells(mycounter + 1, 1) では、Cellsのカッコの中の値は (2, 1) → (3, 1) → (4, 1) ... と変化するだけです。 なので、 Range("O2").Value = Sheets("住所録").Cells((mycounter - 1) * 13 + 1, 1) とすれば、Cellsのカッコの中の値は (1, 1) → (14, 1) → (27, 1) ... のように変化します。 これで、実際どのようにすればよいか、理解していただけますでしょうか。

Jize
質問者

お礼

お返事が遅くなり申し訳ありません><。 umejasさんのおかげで、思い描いた通りの事が出来ました。 有難うございました。

関連するQ&A

  • 顧客番号を指定して印刷するには?

    別シートに印刷用のレイアウトを作成し、更に別シートで印刷設定を行っています。 その印刷設定のページには、印刷開始顧客番号 印刷終了顧客番号とセルを作り、そこで顧客番号を指定して連続印刷したいのですが、今の状況だと、For MyCounter 1 to 5の5の部分を変え残りは手動で入力という方法で印刷しています。 顧客番号のみで連続印刷する為にはどうすれば宜しいのでしょうか? 宜しくお願いいたします。 ---------------------------------------------------------------- Sub 連続印刷2() Dim mycounter As Integer Dim sita1 As Integer Dim migi1 As Integer mycounter = 1 sita1 = Sheets("設定2").Cells(4, 2) migi1 = Sheets("設定2").Cells(5, 2) For mycounter = 1 To 5 Sheets("レイアウト2").Select Range("O2").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 2, 1) Range("O6").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 3, 1) Range("O10").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 4, 1) Range("O14").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 5, 1) Range("O18").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 6, 1) Range("O22").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 7, 1) Range("O26").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 8, 1) Range("O30").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 9, 1) Range("O34").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 10, 1) Range("O38").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 11, 1) Range("O42").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 12, 1) Range("O46").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 13, 1) Range("O50").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 14, 1) Range(Cells(1, 1), Cells(sita1, migi1)).Select Selection.PrintOut Copies:=Sheets("設定2").Cells(6, 2) Next End Sub

  • (できる方)エクセルVBA印刷済を印刷しない

    リストに追加された内容をチェックシートに差し込み印刷する運用を考えています。 リストは定期的に追加され、前回リストに追加した内容は今回の印刷は印刷しないように したいです。 例)10:00 1~3を入力/1~3を印刷済    11:00 4~6を入力/4~6を印刷する ※10:00の1~3hは再度印刷しないようにする ■したいこと 一度印刷した内容もリスト上にあれば、再度印刷されるので、印刷済フラグをたてて、 次回印刷は印刷済フラグをチェックし、再度印刷されないようにしたい ※現マクロは下記にしるしています。(モジュール1) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sub 流し込み印刷() Sheets("データ入力").Select Dim mylastRow As Long '最終行を格納する変数 Dim myLastCol As Integer '最終列を格納する変数 Dim myLastCell As String '最終セルを設定する変数 With ActiveSheet.UsedRange '対象はアクティブシートの使用中のセル '最終行の行番号 mylastRow = .Rows(.Rows.Count).Row '最終列の列番号 myLastCol = .Columns(.Columns.Count).Column End With Dim i As Integer For i = 7 To mylastRow '1 Sheets("問合せ回答一覧").Range("F3:J3") = Sheets("データ入力").Cells(i, 1).Value '2 Sheets("問合せ回答一覧").Range("F4:J4") = Sheets("データ入力").Cells(i, 2).Value '3 Sheets("問合せ回答一覧").Range("F5:J5") = Sheets("データ入力").Cells(i, 3).Value '4 Sheets("問合せ回答一覧").Range("H8:V8") = Sheets("データ入力").Cells(i, 4).Value '5 Sheets("問合せ回答一覧").Range("H9:V9") = Sheets("データ入力").Cells(i, 5).Value '6 Sheets("問合せ回答一覧").Range("H10:V10") = Sheets("データ入力").Cells(i, 6).Value '7 Sheets("問合せ回答一覧").Range("H11:V11") = Sheets("データ入力").Cells(i, 7).Value '8 Sheets("問合せ回答一覧").Range("H12:V12") = Sheets("データ入力").Cells(i, 8).Value '9 Sheets("問合せ回答一覧").Range("H13:V13") = Sheets("データ入力").Cells(i, 9).Value '10 Sheets("問合せ回答一覧").Range("H14:V14") = Sheets("データ入力").Cells(i, 10).Value '11 Sheets("問合せ回答一覧").Range("H15:V15") = Sheets("データ入力").Cells(i, 11).Value '12 Sheets("問合せ回答一覧").Range("H16:V16") = Sheets("データ入力").Cells(i, 12).Value '13 Sheets("問合せ回答一覧").Range("H17:V17") = Sheets("データ入力").Cells(i, 13).Value Sheets("問合せ回答一覧").PrintOut Next i = i + 1 End Sub ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  • 再:(できる方)エクセルVBA印刷済を印刷しない

    リストに追加された内容をチェックシートに差し込み印刷する運用を考えています。 リストは定期的に追加され、前回リストに追加した内容は今回の印刷は印刷しないように したいです。 例)10:00 1~3を入力/1~3を印刷済    11:00 4~6を入力/4~6を印刷する ※10:00の1~3hは再度印刷しないようにする ■したいこと 一度印刷した内容もリスト上にあれば、再度印刷されるので、印刷済フラグをたてて、 次回印刷は印刷済フラグをチェックし、再度印刷されないようにしたい ※現マクロは下記にしるしています。(モジュール1) ※画像に関連する2つのシートを添付しています 上部:データ入力 下部:問合せ回答一覧 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sub 流し込み印刷() Sheets("データ入力").Select Dim mylastRow As Long '最終行を格納する変数 Dim myLastCol As Integer '最終列を格納する変数 Dim myLastCell As String '最終セルを設定する変数 With ActiveSheet.UsedRange '対象はアクティブシートの使用中のセル '最終行の行番号 mylastRow = .Rows(.Rows.Count).Row '最終列の列番号 myLastCol = .Columns(.Columns.Count).Column End With Dim i As Integer For i = 7 To mylastRow '1 Sheets("問合せ回答一覧").Range("F3:J3") = Sheets("データ入力").Cells(i, 1).Value '2 Sheets("問合せ回答一覧").Range("F4:J4") = Sheets("データ入力").Cells(i, 2).Value '3 Sheets("問合せ回答一覧").Range("F5:J5") = Sheets("データ入力").Cells(i, 3).Value '4 Sheets("問合せ回答一覧").Range("H8:V8") = Sheets("データ入力").Cells(i, 4).Value '5 Sheets("問合せ回答一覧").Range("H9:V9") = Sheets("データ入力").Cells(i, 5).Value '6 Sheets("問合せ回答一覧").Range("H10:V10") = Sheets("データ入力").Cells(i, 6).Value '7 Sheets("問合せ回答一覧").Range("H11:V11") = Sheets("データ入力").Cells(i, 7).Value '8 Sheets("問合せ回答一覧").Range("H12:V12") = Sheets("データ入力").Cells(i, 8).Value '9 Sheets("問合せ回答一覧").Range("H13:V13") = Sheets("データ入力").Cells(i, 9).Value '10 Sheets("問合せ回答一覧").Range("H14:V14") = Sheets("データ入力").Cells(i, 10).Value '11 Sheets("問合せ回答一覧").Range("H15:V15") = Sheets("データ入力").Cells(i, 11).Value '12 Sheets("問合せ回答一覧").Range("H16:V16") = Sheets("データ入力").Cells(i, 12).Value '13 Sheets("問合せ回答一覧").Range("H17:V17") = Sheets("データ入力").Cells(i, 13).Value Sheets("問合せ回答一覧").PrintOut Next i = i + 1 End Sub ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  • 請求書を連続印刷するマクロを作りたいと思っています

    請求書のひながた、参照元データは添付図とあわせて見ていただければと思います。 元データは6月、7月分のデータもありますが非表示になってます。 元データの「発送」の部分でフィルタを使って●のついたものだけを絞りそれらだけを連続印刷したいと思ってます。 フィルタではなく●がついたものだけ印刷でもいいのですが。 請求書ひながたの方は1行目に元データを貼り付け さらにそこからひながたに差し込んでいます。 現在使ってるマクロは以下になります。 印刷したい行を選択→請求書印刷ボタンを押す。(ボタンも別になくしてしまっていいのですが) 現在はこれを一回ずつ実行して使っています。 Sub 請求書印刷() ' ' 請求書印刷 Macro Range(Selection, Selection.End(xlToLeft)).Select が×13 Selection.Copy Sheets("請求書").Select Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWindow.SelectedSheets.PrintOut From:=2, To:=32766, Copies:=1 Sheets("元データ").Select End Sub 連続でやりたかったはずなのですが 気づいたらこんな邪道なやり方になってしまいまして。 1行目に挿入して~の部分も無くそうと思いまして(あってもいいのですが) 現在試行錯誤中です。 似たような質問を見つけて途中までやったのですが 請求書を2ページ目から印刷しろ、という命令だったり ●がついてるものだけ、という条件をどこにどう入れればいいかわからず、 また何が足りてないのかも混乱してわからなくなってしまい切羽詰まってます。 こんな状態です↓ Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub InsPrint() Const org As String = "売上" '元データのシート名 Const prs As String = "請" '印刷するシート名 Const strt As Integer = 4 '元データの実データ開始行 Dim idx As Long Dim oSht, pSht As Worksheet Set oSht = Worksheets(org) Set pSht = Worksheets(prs) For idx = strt To oSht.Range("A65536").End(xlUp).Row ' 以下の行を項目数だけコピーして定義する pSht.Range("A1").Value = oSht.Cells(idx, "B").Value pSht.Range("C1").Value = oSht.Cells(idx, "D").Value pSht.Range("D1").Value = oSht.Cells(idx, "E").Value pSht.Range("E1").Value = oSht.Cells(idx, "F").Value pSht.Range("F1").Value = oSht.Cells(idx, "G").Value pSht.Range("G1").Value = oSht.Cells(idx, "H").Value pSht.Range("K1").Value = oSht.Cells(idx, "L").Value pSht.Range("L1").Value = oSht.Cells(idx, "M").Value pSht.Range("M1").Value = oSht.Cells(idx, "N").Value pSht.Range("I1").Value = oSht.Cells(idx, "J").Value pSht.Range("Q1").Value = oSht.Cells(idx, "R").Value pSht.Range("R1").Value = oSht.Cells(idx, "S").Value pSht.Range("U1").Value = oSht.Cells(idx, "O").Value pSht.PrintOut '印刷 ' プリンタの印刷が追いつかないので5頁につき8秒休止する If (idx Mod 2) = 0 Then DoEvents Sleep 8000 'ミリ秒単位で指定 End If Next idx 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

  • VBAで印刷処理の設定

    メインシートで、印刷ボタンを押した際に、 設定値に基づいて、条件分岐するには、どうすればいいでしょうか。 ご教授お願いいたします。 ★シート名 ・メインシート ・名簿 ・設定 の3つのシートがあります。 メインシートには、入力項目があります。 名簿には、 No. 会社名 担当 印刷 ・ ・ ・ のセルがあります。 印刷列は、 「0」or「1」の指定がされています。 0の場合は、印刷しない。 1の場合は、印刷する。 設定シートには、 項目 値 列があります。 項目1には、「プレビュー表示」があり、 値には、「プレビュー表示する」or「プレビュー表示しない」が 設定されます。 Sub 連続印刷() Dim i As Integer Dim LastRow As Integer Worksheets("メインシート").Select With Worksheets("名簿") LastRow = .Range("A65536").End(xlUp).Row For i = 2 To LastRow Range("A4").Value = .Range("A" & i).Value ' プレビュー表示分岐 With Worksheets("設定") ' Cells(行番号, 列番号) If Cells(2, 2).Value = "1" Then ' プレビュー確認 ActiveSheet.PrintPreview ElseIf Cells(2, 2).Value = "プレビュー表示しない" Then ' 確認なしで印刷 ActiveSheet.PrintOut Else ' プレビュー確認 ' ActiveSheet.PrintPreview MsgBox ("test") End If End With Next End With End Sub

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

    差込印刷で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 ネット等で調べて、上記のようなマクロで作業してます。(マクロの設定方法が間違っているところがあると思いますが?)

  • エクセルで変数が2つある連続印刷

    VBA初心者です。困っていますのでよろしくお願いします。 エクセルでVBAを使って,個人の成績個票を連続印刷する方法について教えてください。 一枚の用紙に,上半分は1組の生徒の個票を,下半分には2組の生徒の個票を連続的に印刷します。 「個票sheetセルE3」には1組の生徒番号を,「個票sheetセルE27」には2組の生徒番号を連続的に流し込み,VLOOKUP関数によって別sheetにある成績データを読み込んでいきます。 仮に2枚(1枚は「1組の1番の生徒(101)+2組の1番の生徒(201)」の個票,もう一枚は「1組の2番の生徒(102)+2組の2番の生徒(202)」の個票)を印刷するコードはどうすれば良いのでしょうか。 下のようなコードでは組み合わせ可能な4枚の個票が印刷されてしまいました。 VBAの専門家の方,ご助言いただければ幸いです。 Sub 一組二組印刷() '個票を印刷するマクロです Dim 番号一組 As Integer For 番号一組 = 101 To 102 Sheets("個票").Range("E3").Value = 番号一組 Sheets("個票").PrintOut Next 番号一組 Dim 番号二組 As Integer For 番号二組 = 201 To 202 Sheets("個票").Range("E27").Value = 番号二組 Sheets("個票").PrintOut Next 番号二組 End Sub

  • エクセルVBAで範囲を変数で設定する方法?

    Dim i As Integer For i = 1 to 50 とした場合、 セルであれば Sheets("Sheet2").Cells(i, 2).Value = Sheets("Sheet1").Cells(i, 2) のように変数を使えますが、範囲に使う場合にはどう書けばいいのでしょうか? 例えば、 Sheets("Sheet2").Range("A1:G1").Value = Sheets("Sheet1").Range("A1:G1") のような式で、行数を変数にする場合です。 よろしくお願いします。

  • グラフの「項目軸ラベルに使用」をVBAで

    VBAで項目軸ラベルの範囲を設定したいのですが分からないので教えてください。データ系列は以下で入れられるのですが・・・ Dim R1 as Range Dim R2 as Range Dim n as Integer Range("a1").Select n=range("h1").value Set R1 =Range(Cells(1,1),Cells(n,1)) Set R1 =Range(Cells(1,2),Cells(n,2)) Sheets("グラフ").Select With ActiveChart .SetSourceData R1 たぶんここに入れるのでは・・・ End With Set R1 = Nothing Set R2 = Nothing

専門家に質問してみよう