|
▼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から順に数字が並ぶのですが・・・。
たびたび申し訳ありませんがよろしくご指導をお願いします。
|
|