dポイントプレゼントキャンペーン実施中!

請求書のひながた、参照元データは添付図とあわせて見ていただければと思います。
元データは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

なんとかご助力願いたく、この場所をお借りしました。
まだまだ勉強中の身ではあるのですが、これも急にやらなければいけなくなってしまった為。

よろしければご協力お願い致します。

「請求書を連続印刷するマクロを作りたいと思」の質問画像

A 回答 (1件)

こんにちは



添付画像ですが、はっきり言って読めません。^^;
もう少し具体的にデータの構成を記載しましょう。

>Const org As String = "売上" '元データのシート名
>Const prs As String = "請" '印刷するシート名

それから、上記の定数ですが、"元データ"、"請求書"のシート名を変更したのですか?
変更していないなら、"元データ"、"請求書"に訂正しましょう。


>さらにそこからひながたに差し込んでいます。

ひながたに差し込んでいますというのは、その1行目のデータを請求書の各セルが参照
して請求書が作成されているということですね。

それから、●の個所だけ抽出のIF文の入れ方ですが、骨組みを記載します。

Sub InsPrint2()

  略

  For idx = strt To oSht.Range("A65536").End(xlUp).Row

    If Cells(idx, "Q").Value = "●" Then

      ここに出力する時の内容(転記、プリント)を記述する。

    End If

  Next idx

End Sub

For文の内側にIF文を置き、●がある列(たぶんQだと思いますが)の値を見て、●であるならば
処理をするようにします。

>pSht.PrintOut '印刷

印刷のマクロは記録をとれば確認できるので、一度マクロ記録を行って確認しましょう。


これで、一回作成してみて、なにかあれば補足してください。
それでは
    • good
    • 0
この回答へのお礼

画像は小さいし質問の仕方は拙い、とひどい状態にも関わらず
知恵を貸してくださって本当にありがとうございます!

考え方を教えていただけたのでなんとか動かせるまでに至りました!
改めてありがとうございました!

お礼日時:2011/08/30 10:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!