エクセルマクロにて
A4等用紙サイズに合わせて縦横1×1のオートフィット印刷をするものを組みました。
用紙サイズからオーバーするものは縮小
用紙サイズより小さいものは1×1をオーバーするまで400%を上限に拡大を行いました。
mysheet.HPageBreaks.count >= 1 or mysheet.VPageBreaks.count >=1 _
or mysheet.PageSetup.Zoom>=400
(省略していますが400%になるまで100%から10%ずつ拡大する処理をさせています)
参考本から上記の条件式を採用し、正常に動作するか確認したところ、どうやら、印刷範囲の設定が実施されているファイル・シートについては、
サイズ内で収まっている場合、拡大処理ループとなり、
10%ずつ拡大させていきますが、
PageBreaks.count が0 を指したままになり、増加せず上限400%までループ処理をしてしまいます。
サイズ内に収まっていないものは縮小処理なので、正常動作します。
アドインでツールバーにボタン化させ、色々なエクセルファイルに利用したいので、他ユーザーの設定した、印刷範囲の設定をクリアする訳にもいきません。
PageBreaks.countを使う以外でも何か良い方法があれば幅広く教えて頂ければと思います。
印刷ページ総枚数が2枚になったらループ処理をやめるとかでもいいのですけど。
また、印刷範囲の設定とは、関わりが無く他に問題があるではないかとも疑っていますが、とりあえず設定をクリアしたら、countがきちんと増えて、うまく動作したので、やはり個人的には印刷範囲の設定が一番あやしいと思っています。
windowsXp,excel2003です。
初投稿となります。質問の仕方が下手ですが、ぜひお力をお貸しいただければと思います。
No.4ベストアンサー
- 回答日時:
> とりあえず400%に拡大させて、改ページプレビューで1×1を状態に
> することで、400%から適当な拡大サイズに変更させる処理...
そのとおりです。
> エラーとなるケースが頻発します。
On Error Resume Next としてエラーを無視させてますのでエラーで、停止
することはないはずです。
期待したとおりの動作にならない...ということをエラーと表現されたので
しょうか?
> .VPageBreaks(1).DragOff xlToRight,1
上記の書き方をみると、私が提示したコードをそのまま試されているわけ
ではなさそうです。Excel2002 環境でテストした限り、問題はなさそう
なので、ご自分で書かれたコードの提示、シート内のデータの状況などの
説明がなければ何とも言えません。
このような再質問でしたら、まずは私が提示したものが正常に動作するか
確認し、その結果を教えて下さい。
> Vが垂直方向、Hが水平方向のような気がするのですが、
そのとおりです。
> そうすると xlToRightとxlDownが反対って単純に思ってしまいました。
垂直と水平のとらえ方が逆です。
改ページプレビューにして試してみてください。垂直改ページ(縦の線)は
左右に動かし、水平改ページ(横の線)は上下に動かします。
大変失礼しました。
完全に『On Error Resume Next』を見落としのまま作業してしまいました。
ご指摘のとおり、 『On Error Resume Next』を記述した結果、思い通りの動作を確認することができました。色々と質問の不手際もありながら、親切にご回答してもらえたことに感謝いたします!。
実は、コード作成・実行は会社のパソコンで実施。セキュリティ上そのデータを社外持ち出せず、また掲示板への書き込みも禁止されていることから、家から別のパソコンで質問させてもらっていたため、質問に具体的なコードがしずらかったため。大変ご迷惑おかけしました。
>.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
の記述をそのまま当初引用させてもらったのですが、
「RegionIndex:=1」⇒「regionIndex:=1」とコード認識ができていないようだったので、VBAヘルプの記述を参考にして、変更させて利用させてもらいました。
改ページの水平、垂直方向のご回答もなるほどと理解することができ、大変勉強になりました。
今後も機会がありましたら、また親切なご回答よろしくお願いします。次回は、コード等もきちんと提示して質問できるような形をとりたいと思います。お手数おかけしました。感謝!
No.3
- 回答日時:
何度か試すとうまくいかない場合がありましたので、#2 のコードを一部
訂正いたします。
' // DragOffを使うため改ページプレビュー表示モードにする
ActiveWindow.View = xlPageBreakPreview
↓訂正
' // DragOffを使うため改ページプレビュー表示モードにする
ActiveWindow.View = xlNormalView
ActiveWindow.View = xlPageBreakPreview
回答ありがとうございます。
難しいので、少し追加で教えてください。
要は、とりあえず400%に拡大させて、改ページプレビューで1×1を状態にすることで、400%から適当な拡大サイズに変更させる処理と見てよろしいでしょうか?
それと
.VPageBreaks(1).DragOff xlToRight,1
.HPageBreaks(1).DragOff xlDown,1
と入力しましたが、エラーとなるケースが頻発します。この2行の順序を並び替えたりもしましたが、1行目でエラーとなるケースがほとんどです。しかし、エラーとならず思ったとおりの処理になることもあるので、何が悪いのか判断がつかずにいます。縦方向は1ページ分なのに横方向は2ページ状態でエラー、、、またその反対と、、、
追加で教えてもらえると幸いなのですが、Vが垂直方向、Hが水平方向のような気がするのですが、そうするとxlToRightとxlDownが反対って単純に思ってしまいました。基本的に素人が本を読みながら独学で、作っていますので、ヘルプで確認しましたがどうも理解しづらいのです。
もし、よろしければご面倒ですが、噛み砕いた説明、もしくは参考サイト等アドバイス頂ければとおもいます。引き続きになりもうしわけございません。
No.2
- 回答日時:
> 途中のプレビューを見せたくないと思っています。
Application.ScreenUpdating = False にしてしまえば良いと思います。
ご質問分にあるものとは多少ロジックが異なりますが、こんな感じで
できるかと....
Sub MaxSizePrint()
Dim lViewModeBackup As XlWindowView
On Error Resume Next
' // 現在の表示モードを退避しておく
lViewModeBackup = ActiveWindow.View
' // 画面の動きをユーザーには見せない
Application.ScreenUpdating = False
With ActiveSheet
' // とりあえず Excelで指定可能な最大印刷倍率にする
.PageSetup.Zoom = 400
' // DragOffを使うため改ページプレビュー表示モードにする
ActiveWindow.View = xlPageBreakPreview
' // 改ページを印刷領域の外にドラッグ
.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
.HPageBreaks(1).DragOff Direction:=xlDown, RegionIndex:=1
' // 表示モードを元に戻す
ActiveWindow.View = lViewModeBackup
End With
' // 印刷処理等をここで
Application.ScreenUpdating = True
End Sub
<<参考: [DragOff メソッド] Excel VBA へプル引用>>
このメソッドは、マクロ記録機能用です (適用できるのは、表示が改ページ
プレビューのときだけです)。
No.1
- 回答日時:
> PageBreaks.count が0 を指したままになり、増加せず上限400%まで
> ループ処理をしてしまいます。
Zoom プロパティーを更新したあと、改ページプレビューを実行するなどして
Excel に印刷レイアウトを再計算させない限り、HPageBreaks や VPageBreaks
の Count プロパティーは更新されないようです。
> とりあえず設定をクリアしたら、countがきちんと増えて...
上記推論の根拠のひとつです。
回答ありがとうございました。
やはりそうなのですね。
>改ページプレビューを実行するなど
ユーザーへはボタン押したらノンストップで印刷まで持っていき、
途中のプレビューを見せたくないと思っています。
「など」ということだったのでその他に、良い手段をご存知であれば
引き続き回答いただければ幸いです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル2013「次のページ数に合わせて印刷」が小さすぎる 9 2023/03/28 10:18
- Excel(エクセル) エクセルのマクロで複数シートを両面印刷するには? 2 2022/12/08 23:23
- Word(ワード) Wordでの印刷サイズについて A4の原稿をB5サイズで出力したいとき、 印刷から用紙サイズの指定か 4 2022/04/30 09:51
- Excel(エクセル) エクセルシートのPDFでの保存 2 2022/09/06 13:05
- Excel(エクセル) Excelであるシートだけ印刷できない 1 2022/04/01 09:04
- Excel(エクセル) Excel VBAプルダウンの値を変えながら2枚ずつ印刷する方法? 4 2022/05/27 13:04
- Excel(エクセル) エクセルVBAで複数のシート印刷設定 1 2022/09/07 12:03
- Word(ワード) office365のWordの印刷範囲が勝手に狭くなっています。 4 2022/07/18 16:31
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- その他(Microsoft Office) Excelのマクロについて教えてください。 1 2022/03/25 10:03
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
ExcelVBA 改ページの横破線を消す方法
Excel(エクセル)
-
ExcelVBA Range クラスの PageBreak プロパティを設定できません。
Visual Basic(VBA)
-
vba 改ページカウントで不可解なエラーを回避したいのですが教えてください
Excel(エクセル)
-
-
4
Excel 改ページのVBAうまくいかないです
Excel(エクセル)
-
5
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
6
VBA マクロ実行時エラー’1004RangeクラスのPasteSpecialメソッドが失敗
Access(アクセス)
-
7
【VBA】ワークブックを開く時にエラーが出る場合と出ない場合の違いは?
Excel(エクセル)
-
8
VBA 改ページの解除
Visual Basic(VBA)
-
9
Rangeメソッドは失敗しました。globalオブジェクトについて
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA 「印刷中」メッセー...
-
ACCESSで印刷プレビューをした...
-
印刷時ヘッダーとフッターを挿入
-
PDFファイルを開かずに印刷...
-
テキストエリアの内容を印刷で...
-
クリスタルレポートでプレビュ...
-
HTMLって印刷するとずれるんで...
-
コマンドプロンプトでフォルダ...
-
印刷ボタンを連打するとエラー...
-
Excel VBAで文字列の可視長を得...
-
ページの一部が消える印刷プレ...
-
印刷プレビュー表示後ユーザー...
-
印刷プレビュー
-
ホームページビルダー11でA4サ...
-
インラインフレームの印刷について
-
vb2019を使ってリッチテキスト...
-
googleマップのストリートビュ...
-
XHML+フルCSSサイトがIE6印刷...
-
印刷範囲の指定はできますか?
-
OpenOffice Calc basic で印刷...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PDFファイルを開かずに印刷...
-
EXCEL VBA 印刷プレビューダイ...
-
Excel VBAで文字列の可視長を得...
-
EXCEL VBAでPDFファイルを開い...
-
コマンドプロンプトでフォルダ...
-
excelにて各シートの総印刷ペー...
-
ACCESS VBA レポートプレビュー...
-
サイト全体を縮小して印刷する...
-
ヘッダやフッタの印刷をしたくない
-
PageBreaks.Countと印刷範囲の...
-
ページ内にスクロールバーのあ...
-
Excel VBA 「印刷中」メッセー...
-
ページ内の画像印刷について
-
横に長いWeb画面を一枚の用紙に...
-
検索画面に表示される広告について
-
ランディングページの数え方が...
-
ラジオボタンをチェック済みの...
-
C# 印刷可能領域と余白範囲...
-
ACCESSで印刷プレビューをした...
-
インラインフレームの印刷について
おすすめ情報