|
ハチさん回答ありがとうございます。
>自動改ページで不具合が出たことがありました。
そうなんですか・・・。
今回は強制的に1頁36行に改ページ設定しています。
どうもActiveWindow.View = xlPageBreakPreviewを使用して
プログラムを実行すると、処理時間が約2倍かかります。
同一ブック内のシートのデータをオートフィルターにて順次
抽出し、別シートの印刷用シートへ書き込んでいます。
強制的に改ページを各ページ全てに設定しておけば、
ActiveWindow.View = xlPageBreakPreviewを
使用しなくても不具合は発生しないでしようか?
プログラムは下記の通りです。
・・・・・・・・・・・・・
・・・・・・・・・・・・・
印刷用Sheet.Select
ActiveWindow.View = xlPageBreakPreview
DATA.AutoFilterMode = False 'DATAシートのAutoFilterを解除
DATA.Range("A1").AutoFilter 'DATAシートのAutoFilterを設定
On Error Resume Next
Range("A3", Cells(ActiveSheet.UsedRange.Rows.Count, ActiveSheet.UsedRange.Columns.Count)).SpecialCells(xlCellTypeConstants, 3).ClearContents
On Error GoTo 0
Application.ScreenUpdating = False
Set Rng2 = DATA.Range("K2:K" & DATA.Columns("K").CurrentRegion.Rows.Count)
MyPage = 1
Count = 3
For Each dd In Rng2
DATA.Range("A1").AutoFilter Field:=DATA.Columns(DATA科分類_列).Column, Criteria1:=dd
DATA件数 = Application.Subtotal(3, DATA.Columns(DATA科分類_列)) - 1
With DATA.Range("A1").CurrentRegion.Columns(DATA科分類_列)
Set CopyRng = .Resize(.Rows.Count - 1).Offset(1, 0).SpecialCells(xlCellTypeVisible)
End With
For Each wb In CopyRng
Cells(Count, Columns(印刷用県名_列).Column).Value = DATA.Cells(wb.Row, Columns(DATA県名_列).Column).Value
Cells(Count, Columns(印刷用科名_列).Column).Value = DATA.Cells(wb.Row, Columns(DATA科名_列).Column).Value
Cells(Count, Columns(印刷用発行年_列).Column).Value = DATA.Cells(wb.Row, Columns(DATA発行年_列).Column).Value
Cells(Count, Columns(印刷用免許No_列).Column).Value = DATA.Cells(wb.Row, Columns(DATA免許No_列).Column).Value
'Cells(Count, Columns(印刷用備考欄_列).Column).Value = DATA.Cells(wb.Row, Columns(DATA備考欄_列).Column).Value
'Cells(Count, Columns(印刷用県名カナ_列).Column).Value = DATA.Cells(wb.Row, Columns(DATA県名カナ_列).Column).Value
Count = Count + 1
If Count = ActiveSheet.HPageBreaks(MyPage).Location.Row Then
Range(印刷用科分類_列 & ActiveSheet.HPageBreaks(MyPage).Location.Row - ActiveSheet.HPageBreaks(1).Location.Row + 1) = "【 " & dd & " 】"
Count = ActiveSheet.HPageBreaks(MyPage).Location.Row + 2
MyPage = MyPage + 1
End If
Next
Range(印刷用科分類_列 & ActiveSheet.HPageBreaks(MyPage).Location.Row - ActiveSheet.HPageBreaks(1).Location.Row + 1) = "【 " & dd & " 】"
Count = ActiveSheet.HPageBreaks(MyPage).Location.Row + 2
MyPage = MyPage + 1
Next
・・・・・・・・・・・・・・・・・・・・・・・・・・
|
|