|
▼小僧 さん:
早速のお返事ありがとうございます。
ためさせていただきました。
>> '↓ココで、「アプリケーション定義エラー」が発生する
>> Debug.Print Err.Description
>
>エラーが発生するのはその行で間違いありませんでしょうか。
>
>
>> .HPageBreaks.Add Before:=Cells(arrPgBreakRow(i), 1)
> ^^^^^
>Cells オブジェクトが上位のオブジェクトから参照されていないのが
>エラーの原因だと思われるのですがいかがでしょう。
>(「.」がついていませんよね)
エラーの発生箇所について間違いはないようです。
「.Cells」でなく「Cells」でも確かにセルを参照してます。
ただ、あまり良い書き方ではないと思うので 改めたいと思います。
(ありがとうございます。)
エラーが発生するのは、水平方向の自動改ページを1番下にドラッグさせた時で、間違いはないようです。
改ページを設定しようとしているデータは、えらく縦長なデータです。
ただ、自動改ページを一回、2回ドラッグさせた場合ではエラーが発生せず、
4回目、五回目あたりで発生するようので
何度も改ページをドラッグすることで1ページにおさめようとしたデータが大きくなりすぎて
エラーが発生しているかも、しれません(推測なのでまちがっているかも)
>>データが縮小されて、印刷紙の左上に小さく印刷されます。
>
>こちらについては もう ExcelVBA の問題ですね^^
>当方も余り詳しくないので以下は外しているかもしれません。
>
>行については改ページを解除した後、再設定されていますが、
>列については解除されたままですよね。
>
>例えば 100% の状態でA〜G 列までが印刷されるとしてデータが H 列まであったとすると、
>ご提示されたコードですと、縮小印刷されてしまいませんでしょうか。
>縮小して1枚に納めるか、それとも列も考慮して改ページを設けるかは
>nn さんの仕様次第だと思います。
>Private Sub setpgBreak2()
>'要参照 Microsoft Excel x.x Object Library
>Dim xlsApp As Excel.Application
>Dim xlsWkb As Excel.Workbook
>Dim aryPgBreakRow() As Variant
>Dim aryPgBreakCol() As Variant
>Dim i As Long
>Dim j As Long
>
> aryPgBreakRow = Array(10, 20, 30, 40)
> aryPgBreakCol = Array(5, 10)
>
> Set xlsApp = CreateObject("Excel.Application")
> Set xlsWbk = xlsApp.WorkBooks.Open("D:\test.xls")
> 'xlsApp.Visible = True
>
>'改ページプレビュー表示
> xlsApp.Windows(1).View = xlPageBreakPreview
>
> With xlsWkb.Sheets("シート名")
>'シートのすべてを印刷範囲に設定する
> .PageSetup.PrintArea = ""
>
>'すべての改ページを解除
> .ResetAllPageBreaks
>
>'改ページ設定
> For i = 0 To UBound(aryPgBreakRow)
> .HPageBreaks.Add Before:=.Cells(aryPgBreakRow(i), 1)
> Next
>
> For j = 0 To UBound(aryPgBreakCol)
> .VPageBreaks.Add Before:=.Cells(1, aryPgBreakCol(j))
> Next
>
> End With
>
> xlsWkb.Close True: Set xlsWkb = Nothing
> xlsApp.Quit: Set xlsApp = Nothing
>End Sub
教えていただいたコードを試してみました。
確かに 手動改ページは教えていただいたやり方で設定することができました。
(縮小率も問題ありません)
ただ、自動改ページが解除されなくて・・。
縮小率は適切に設定し、自動改ページを解除し、手動改ページを設定したい!
というのはナカナカ難しいかもしれない・・。
というかExcelの質問になってきてしまいました。(ほんとすみません)
|
|