- ベストアンサー
VBAでの改ページ設定についての質問
- VBAで作成したプログラムにおいて、指定した範囲を改ページとして設定する方法についての質問です。
- 質問者は、A1~C108を1ページ、A109~C216を2ページ目、A217~C325を3ページ目として印刷したいと考えていますが、プログラムがうまく動かないと困っています。
- 質問者は、この問題について詳しい方からのアドバイスを求めています。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
>うまくいっていないことは、 >B列とC列の間でページが変わってしまうことです。 >ABC列を1ページにしたいのですがABとC列でページが変わってしまいます。 >どうしたらうまくいくか教えていただけないでしょうか? 最初の質問でそれを書かないと、適切な回答が出てきません。 改ページ設定による縮小率でも、印刷範囲のヨコ幅が収まってないという事です。 【改ページの行設定は問題ない】なら、予め手動操作ででも [ページ設定]-[ページ]タブで 『次のページ数に合わせて印刷:横[ 1 ]×縦[ ]』(縦をブランク) にしておけば済む話だったかもしれません。 ただシート状態によっては改ページ行が設定されないかもしれないので念のため ActiveWindow.View = xlPageBreakPreview With ActiveSheet .PageSetup.Zoom = 100 Set .HPageBreaks(1).Location = .Range("C109") Set .HPageBreaks(2).Location = .Range("C217") Set .HPageBreaks(3).Location = .Range("C326") If .VPageBreaks.Count > 0 Then .VPageBreaks(1).DragOff xlToRight, 1 End If End With これで。
その他の回答 (7)
- Musaffah
- ベストアンサー率36% (37/101)
ページ設定はとかくプリンタの設定に依存されることがとても多いです。 用紙サイズとか余白・ヘッダ&フッタ部の設定等を今一度確認してください。 それと、A~Cのセルの幅とページ設定の「ズーム」はどれくらいですか? もしAの幅+Bの幅>A4縦の長さであれば、当然ながら(ズームが100%である限り)自動改行されてしまいます。
お礼
ありがとうございました。
- end-u
- ベストアンサー率79% (496/625)
>しかし、下記のマクロではABとC列でわかれてページ設定されました。 そうですか、ご報告どうもありがとうございます。 環境や状況によってはそういう事もあるのかもしれませんね。 >上記の方法ではうまくいきました。 であればそれで良いんじゃないでしょうか。 私の方は特段、追加レスありませんので終了です。
お礼
ありがとうございました。
- Musaffah
- ベストアンサー率36% (37/101)
少なくとも、 ・1~109の間 ・109~217の間 ・218~326の間 ・327以降 にそれぞれ何らかのデータがあればできますよ。
お礼
ありがとうございます。 自分もそう思っているのですが
- Musaffah
- ベストアンサー率36% (37/101)
うまく動かないのは、エラーがでるということでしょうか? 私がやった限りでは、質問者様のソースコードで改ページ設定できましたよ。 シート内にデータはどこまで入ってます?
お礼
ありがとうございます。 エラーはでません。 A1~C183まで値が入っています。
- end-u
- ベストアンサー率79% (496/625)
#横入り失礼します。 "C109"、"C217"、"C326"は印刷対象範囲内にありますか? (印刷範囲を設定しているか、またはデータが存在しているか、という意味です) 既出No.2 temtecomai2さんのコードで良いと思いますが ActiveSheet.PageSetup.PrintArea = "$A$1:$C$325" ActiveWindow.View = xlPageBreakPreview Set ActiveSheet.HPageBreaks(1).Location = Range("A109") Set ActiveSheet.HPageBreaks(2).Location = Range("A217") このように1行目で印刷範囲を設定するとどうなるか試してみてください。 #以下余談 >うまく動きません。 >うまくいきませんでした。 というのがどういう状況か説明しないと回答側はわかりません。 ・エラーが発生するとか (その場合エラーナンバーとメッセージ内容、エラー行) ・エラーは出ないが期待結果が出ないとか
お礼
ご回答ありがとうございます。 エラーはでていません。 うまくいっていないことは、 B列とC列の間でページが変わってしまうことです。 ABC列を1ページにしたいのですがABとC列でページが変わってしまいます。 どうしたらうまくいくか教えていただけないでしょうか? よろしくお願いします
補足
"C109"、"C217"、"C326"は印刷対象範囲内にあります。 セルにグラフを貼っています。
- temtecomai2
- ベストアンサー率61% (656/1071)
ActiveWindow.View = xlPageBreakPreview Set ActiveSheet.HPageBreaks(1).Location = Range("A109") Set ActiveSheet.HPageBreaks(2).Location = Range("A217") ActiveSheet.PageSetup.PrintArea = "$A$1:$C$325" 動作としては 1. プレビュー画面にして Excel に改ページを自動生成させる 2. 自動生成された水平改ページの 1 (Location は 59行目) を A109 の前に移動。 3. 自動生成された水平改ページの 2 (Location は 117行目) を A217 の前に移動。 4. 印刷範囲の最終行を 325行目までとする。(これにより自動生成されていた水平改ページ 3~5 が自動削除される)
お礼
ありがとうございます。やってみたのですがうまくいきませんでした
補足
セルにグラフを貼っているのですが、そのことが原因で悪影響を及ぼしている可能性はありますか?
- Versailles123
- ベストアンサー率21% (33/156)
「ActiveWindow.View =…」 の行の下に On Error Resume Next を加えます。 これで無事に改ページができると思います。 試してみてください。
お礼
ありがとうございます。やってみたのですがうまくいきませんでした。
お礼
ありがとうございます。 【改ページの行設定は問題ない】なら、予め手動操作ででも [ページ設定]-[ページ]タブで 『次のページ数に合わせて印刷:横[ 1 ]×縦[ ]』(縦をブランク) にしておけば済む話だったかもしれません。 上記の方法ではうまくいきました。 しかし、下記のマクロではABとC列でわかれてページ設定されました。 ActiveWindow.View = xlPageBreakPreview With ActiveSheet .PageSetup.Zoom = 100 Set .HPageBreaks(1).Location = .Range("C109") Set .HPageBreaks(2).Location = .Range("C217") Set .HPageBreaks(3).Location = .Range("C326") If .VPageBreaks.Count > 0 Then .VPageBreaks(1).DragOff xlToRight, 1 End If End With