Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


40075 / 76732 ←次へ | 前へ→

【41761】Re:改ページ設定
お礼  トホホ  - 06/8/22(火) 9:39 -

引用なし
パスワード
   ▼ichinose さん:
>▼トホホ さん:
>こんばんは。
>
>>マクロを使用して約3,000行からなる帳票を作成しました。
>>1ページの印刷行数を指定して印刷することは可能でしょうか?
>>またそれが不可能であれば、リストの左端列(A列)などに行番号を振っておくなどしてもよいのですが。
>>いつも手作業でページ割をしているのでいざ印刷するとなるとかなりの時間がかかっています。
>>どうかよい方法があれば教えてください。
>
>600行ぐらいでテストしましたが、遅いですよ!!
>Excelは、印刷は不得意ですからねえ・・・。
>
>新規ブックの標準モジュールに
>'===============================================================
>Sub main()
>  With Range("a1:o600")
>   .Formula = "=row()*column()"
>   .Value = .Value
>   MsgBox "サンプル作成"
>   Application.ScreenUpdating = False
>   Call pr_settei(.Cells, 60)
>   Application.ScreenUpdating = True
>   End With
>  ActiveSheet.PrintPreview
>End Sub
>'==============================================================
>Sub pr_settei(prng As Range, intervalline As Long)
>'印刷のぺージ設定を行う
>'input prng-----印刷設定を行うセル範囲
>'   intervalline---改ページを行う間隔(行数)
>  Dim ar As Range
>  Dim sht As Worksheet
>  Set sht = prng.Parent
>  With sht
>   .Parent.Activate
>   .Activate
>   .Cells.PageBreak = xlPageBreakNone '手動設定の解除
>   ActiveWindow.View = xlPageBreakPreview
>   .PageSetup.Zoom = 100
>   .PageSetup.PrintArea = ""
>  
>   For idx = 1 To prng.Rows.Count Step intervalline
>    Set ar = prng.Range(idx & ":" & idx + intervalline - 1)
>    .PageSetup.PrintArea = ar.Address
>    Call VDRGOFF(sht, ar) 'オートマチックの解除
>    Call HDRGOFF(sht, ar)
>    .HPageBreaks.Add .Range(.Cells(ar.Row + ar.Rows.Count, 1), .Cells(ar.Row + ar.Rows.Count, ar.Columns.Count))
>    Next
>   ActiveWindow.View = xlNormalView
>   .PageSetup.PrintArea = prng.Address
>   End With
>End Sub
>'====================================================================
>Sub VDRGOFF(sht As Worksheet, rng As Range)
>  On Error Resume Next
>  Dim vv As VPageBreak
>  For Each vv In sht.VPageBreaks
>   If Not Application.Intersect(vv.Location, rng) Then
>     vv.DragOff xlToRight, 1
>     End If
>   Next
>  On Error GoTo 0
>End Sub
>'===================================================================
>Sub HDRGOFF(sht As Worksheet, rng As Range)
>  On Error Resume Next
>  Dim hh As HPageBreak
>  For Each hh In sht.HPageBreaks
>   If Not Application.Intersect(hh.Location, rng) Then
>    hh.DragOff xlDown, 1
>    End If
>   Next
>  On Error GoTo 0
>End Sub
>
>
>これでmainを実行してみてください。
>
>サンプルコードmainでは、
>
>セル範囲A1〜N600までに適当なデータを配置した後、
>
>60行おきに改ページします。
>
>ページ設定が用紙サイズA4レベルでは、
>それぞれのページは縮小されているはずです。
>
>ということがしたいのでしょうか?
>
>
>試してみてください。

ありがとうございます。
実際にためさせていただきました。
が・・・。あまりにも初心者のため、
どの部分を書き換えると実データが使用できるか
わかりません。
サンプルでは1から順に数字が並ぶのですが・・・。
たびたび申し訳ありませんがよろしくご指導をお願いします。

0 hits

【41723】改ページ設定 トホホ 06/8/21(月) 15:10 質問
【41724】Re:改ページ設定 ハチ 06/8/21(月) 15:37 回答
【41725】Re:改ページ設定 トホホ 06/8/21(月) 15:48 お礼
【41736】Re:改ページ設定 ichinose 06/8/21(月) 18:42 発言
【41761】Re:改ページ設定 トホホ 06/8/22(火) 9:39 お礼
【41766】Re:改ページ設定 ichinose 06/8/22(火) 12:35 発言
【41773】Re:改ページ設定 トホホ 06/8/22(火) 13:53 質問
【41783】Re:改ページ設定 Kein 06/8/22(火) 16:56 回答
【41790】Re:改ページ設定 ichinose 06/8/22(火) 22:08 発言

40075 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free