Excel VBA 質問スレッド №2049 (解決済)

別シートからVLOOKUPでデータ検索→直接印刷の繰り返し

投稿者 : はいちゅう     投稿日時 : 2024/11/26(Tue) 15:38:09     OS : 未指定     EXCEL : 未指定
<売上集計表>
  A       B        C        D      E
得意先コード  得意先名1    取引合計     値引額    伝票番号
4102      山田太郎     24,746     1,868     500154
4410      西保三郎     98,467     7,434     500155

<伝票>

A6セルに得意先コードが入力されると、
C3に伝票番号、C6に得意先名がでてくるようにしています。
G9には値引額が表示されます。



↑これを順番に検索→印刷→検索→印刷を<売上集計表>A列が終わるまで
繰り返し行いたいのですが、プリントアウトができません。
1行ずつ実行してもプリンターにデータは行くようなのでプリンター上でエラーが起きて
「異常終了」とプリンターに表示されて終わります・・・
何が良くないのか調べても調べても分かりません。
どなたか教えていただけませんでしょうか?





Sub VLOOKUP関数の差し込み印刷()
    Dim masterSheet As Worksheet
    Dim invoiceSheet As Worksheet
    Dim formula As String
    Dim i As Integer
    Dim j As Integer
    Dim rng As Range
    Dim ranges As Variant
    Dim colIndexes As Variant

    ' マスタシートと請求書シートを設定
    Set masterSheet = ThisWorkbook.Sheets("売上集計表")
    Set invoiceSheet = ThisWorkbook.Sheets("伝票")
    
    ' VLOOKUP設定用の範囲とカラムインデックス
    ranges = Array("C6", "G9", "C3")
    colIndexes = Array(2, 4, 5)

    ' ループでA2からA4までのセルをB1に設定し、VLOOKUP関数を設定
    For i = 2 To 3
        invoiceSheet.Range("A6").Value = masterSheet.Cells(i, 1).Value
        
        For j = LBound(ranges) To UBound(ranges)
            Set rng = invoiceSheet.Range(ranges(j))
            
            If j >= 3 Then '条件付きのVLOOKUP関数の設定
                formula = "=IF(LEN(VLOOKUP($A$6&, 売上集計表!$A:$E, " & colIndexes(j) & ", FALSE)) > 0, VLOOKUP($A$6, 売上集計表!$A:$E, " & colIndexes(j) & ", FALSE), """")"
            Else '単純なVLOOKUP関数の設定
                formula = "=VLOOKUP($A$6," & masterSheet.Name & "!$A:$E," & colIndexes(j) & ",FALSE)"
            End If
            
            rng.formula = formula
        Next j

        ' プリントアウト(直接印刷)
        With invoiceSheet.PageSetup
            .FitToPagesWide = 1 ' ページ幅を1ページに設定
            .FitToPagesTall = 1 ' ページ高さを1ページに設定
        End With
        invoiceSheet.PrintOut
    Next i

End Sub

スポンサーリンク
[返信 1] Re : 別シートからVLOOKUPでデータ検索→直接印刷の繰り返し
投稿者 : ピロリ     投稿日時 : 2024/11/26(Tue) 20:58:31
■[質問] はいちゅうさん(2024-11-26 15:38:09)の記事
> 1行ずつ実行してもプリンターにデータは行くようなのでプリンター上でエラーが起きて
> 「異常終了」とプリンターに表示されて終わります・・・
プリンタ上はエラーですが、マクロの実行自体は正常に終了する訳ですよね。
私の環境では(自宅(EPSON)でも 会社(RICOH)でも)ご提示のコードで2名分の伝票?が印刷できてます。
そのプリンタのマニュアルに、「異常終了」を表示する要因が記載されていないのでしょうかね?
期待した回答でなくて、すいませんけど・・・

[返信 2] Re : 別シートからVLOOKUPでデータ検索→直接印刷の繰り返し
投稿者 : はいちゅう     投稿日時 : 2024/11/27(Wed) 09:23:23
■[返信 1] ピロリさん(2024-11-26 20:58:31)の記事
ご返信ありがとうございます!
そうなんですね・・・試して頂いてありがとうございます(T_T)

毎月このような処理が必要になるので
先月別のブックで作成していてそれは正常に動くのですが
今月分を作成するのに、先月分のマクロモジュールを別ブックにコピーしたところ
質問のような状態になってしまいました・・・

プリンターのエラーコードたしかに!と思って調べてみたのですが
原因→アプリケーション側のプリントデータそのものに不正なパラメーターが含まれている、もしくはプリントデータと印刷設定に不整合が生じている可能性があります。
処置→アプリケーション側のプリントデータと印刷設定を確認し、もう一度プリントを指示してください。
と出てきました・・・。
データはPC本体に入っていますし、再起動してみたりしましたが変化が見られず・・・(T_T)

[返信 3] Re : 別シートからVLOOKUPでデータ検索→直接印刷の繰り返し
投稿者 : ピロリ     投稿日時 : 2024/11/27(Wed) 18:53:37
■[返信 2] はいちゅうさん(2024-11-27 09:23:23)の記事
> 毎月このような処理が必要になるので
> 先月別のブックで作成していてそれは正常に動くのですが
> 今月分を作成するのに、先月分のマクロモジュールを別ブックにコピーしたところ
> 質問のような状態になってしまいました・・・
今月用のブックへ、先月のブック内のソースコードを持ってきた(コピペした)ってことですかね。
先月のブックをコピーして今月用のブックとし、今月の売上データを入力(コピペ)すべきなのでは。
要は、ソースコードのコピペではなく、データ側をコピペするってこと。
まずは、それで印刷が復活するか確認してみてはいかがでしょう。

個人的には、ファイル選択ダイアログを使って、印刷したい月のブックを選択。
その月の売上データを「売上集計表」シートへ取得し「伝票」シートを介して印刷って感じでしょうか。
毎月ブックが増えていくのなら、マクロブックとデータブックは分離した方が良いと思いますが・・・

[返信 4] Re : 別シートからVLOOKUPでデータ検索→直接印刷の繰り返し
投稿者 : はいちゅう     投稿日時 : 2024/11/29(Fri) 13:11:36
B5で印刷したかったのですが、一度A4に設定したら印刷できたので、その後まだB5に設定したら印刷できました・・・!
ありがとうございます!

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2024-12-07 23:07:04 )
タイトルとURLをコピーしました