• ベストアンサー

ExcelVBAで印刷設定の拡大率を取得する方法

お世話になります。 ExcelVBAで、横の幅をいっぱいにとったときの拡大率を取得しようとしていますが、うまくいかず困っております。 With Worksheets(1).PageSetup .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = 1000 End With で横1ページに合わせて印刷できる設定になりますが、このときの拡大率(Zoom)を変数に代入することができません。どなたか、お助けいただけないでしょうか。 どうか、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • pauNed
  • ベストアンサー率74% (129/173)
回答No.1

こんにちは。 (2005年5月くらいのwww2.moug.net過去ログ情報から) Sub try()   '自動設定{横:1,縦:無指定}   ExecuteExcel4Macro "Page.Setup(,,,,,,,,,,,,{1,#N/A})"   'zoom設定{横:無指定,縦:無指定}   ExecuteExcel4Macro "Page.Setup(,,,,,,,,,,,,{#N/A,#N/A})"   'zoom取得   MsgBox ExecuteExcel4Macro("Get.Document(62)") End Sub Excel4.0マクロ関数を実行する、[ExecuteExcel4Macro メソッド]を使った例です。 これでないと取れないと思います。 ActiveSheet限定ですが、PageSetupはVBAより高速です。 (参考)Excel4.0マクロ関数のヘルプファイルは下記より。 http://support.microsoft.com/kb/128185/ja

kisoyasa
質問者

お礼

pauNed 様 ありがとうございます! すごいです! こんな方法があるんですね。 感動しました! ある本では、sendkeysで倍率を表示する方法がのっていたのですが、バージョンによる汎用性がないような気がしました。 私は、印刷可能範囲とデータのサイズをグチャグチャと計算して、割り算でもする方法があるのかと思っていました。

関連するQ&A

  • VBAの印刷について

    VBAでの質問です。 ある処理を施したあとにページ設定をして印刷するプログラムを作成しているのですが、なぜか同じものが2枚出力されてしまいます。 1枚だけ指定して印刷するにはどのようにコードを書けば良いかどなたか教えて下さい。お願いします。 With ActiveSheet.PageSetup 'ページ詳細設定 .PaperSize = xlPaperA4 .Zoom = False .FitToPagesTall = 1       .FitToPagesWide = 1     End With 'ActiveSheet.PrintOut Worksheets(sheetname5).PrintOut ActiveWorkbook.SaveAs Filename:=takiicode & "_" & Format(today, "yyyymmdd") & ".xls" '保存) Workbooks(takiicode & "_" & Format(today, "yyyymmdd") & ".xls").Close SaveChanges:=True '終了

  • Excelのマクロで印刷設定をすると遅くなる

    Excelのマクロについて 久しぶりに質問させていただきます。 マクロで印刷の設定をすると 遅くなるのでしょうか? Range("A1:Z10").Select With ActiveSheet.PageSetup  .Orientation = xlLandscape  .Zoom = False  .FitToPagesWide = 1  .FitToPagesTall = 1  .TopMargin = Application.CentimetersToPoints(1)  .BottomMargin = Application.CentimetersToPoints(1)  .LeftMargin = Application.CentimetersToPoints(1)  .RightMargin = Application.CentimetersToPoints(1) End With Selection.PrintPreview というようなマクロを作って実行すると プレビュー画面が出るまでに かなり時間がかかるのです。 職場のパソコンであるため パソコンそのものがかなり古いのですが マクロを使わずに直接、印刷の設定をすれば すぐにプレビューが表示されます。 ただ、同じシートをいろいろな方法で印刷する必要があるため マクロを組んでみたわけです。 ちょっと我慢すればいいだけで 仕事そのものに大きく影響するわけではありませんが 皆様のご助言をよろしくお願いいたします。

  • Exsel2000ページ設定(VBA)について

    このごろ度々お世話になっております。 エクセルでのページ設定で、"ワークシートを何ページに収めて印刷"するか設定できると思うのですがそれを指定してしまうと、他で指定した余白設定とかは無視されてしまうのでしょうか? VBAで 'ページ設定 Set SENTAKU = Workbooks(3).Sheets(1) With SENTAKU.PageSetup .Orientation = xlLandscape .Zoom = False .FitToPagesWide = 1 .TopMargin = 55 .BottomMargin = 15 .RightMargin = 0 .PrintTitleRows = "$2:$5" End With としたら、見事にMarginが無視されてました。 右の余白「0」は捨てられないのですが、セルの幅が増えても今のデータを横1枚で収めたいと考えてます。 (左の余白は少しぐらい減ってもいいが、どちらかというとZoomを変更して横1枚に収めたい。ちなみに縦は何ページでも可) PageSetupでそのような設定ができないのなら横がはみ出したら、違うページ設定みないなのをIf文で書くことは可能なのでしょうか? (横がはみ出したらAの設定(Zoomの縮小率が少し多い)、1枚で収まったらBの設定のような) よろしくお願いいたします。

  • Excel2003VBA 印刷設定

    お世話になります。 下記、手入力による(?)印刷設定のコードなのですが不要な行をご教示いただきたく投稿致しました。 ・設定した内容は上下左右の余白を「0」にした。 ・用紙サイズと向きを選択した。 ・「1ページにあわせる」ように設定をした。 だけなのですが、恐らく単なる「マクロ記録」を利用したので余計な記述も含まれていると思います。 すでに削除してありますが 上から4行ほど何かを「""」という設定があったので 「勘」で削除し 動作確認ではOKでした。 でも見れば見るほど迷いが生じ どなたか ご存知の方にご教示いただこうと投稿致しました。 不要な行をご教示ください。 宜しくお願い致します。 Sub 印刷設定_A3横() ' ' 印刷設定_A3横 Macro ' マクロ記録日 : 2009/5/14 ' ' With ActiveSheet.PageSetup .LeftMargin = Application.InchesToPoints(1) .RightMargin = Application.InchesToPoints(0) .TopMargin = Application.InchesToPoints(0) .BottomMargin = Application.InchesToPoints(0) .HeaderMargin = Application.InchesToPoints(0.511811023622047) .FooterMargin = Application.InchesToPoints(0.511811023622047) .PrintHeadings = False .PrintGridlines = False .PrintComments = xlPrintNoComments .PrintQuality = 600 .CenterHorizontally = False .CenterVertically = False .Orientation = xlLandscape .Draft = False .PaperSize = xlPaperA3 .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = 1 .PrintErrors = xlPrintErrorsDisplayed End With ActiveWindow.SelectedSheets.PrintOut Copies:=1, Preview:=True, Collate:= _ True End Sub

  • VBAでZoomプロパティで値の取得方法を教えてください

    Win XP エクセル2003でVBAを使用しています。1ペ-ジに収めて印刷したい為 PageSetupで .Zoom=False .FitToPagesWide=1 .FitToPagesTall=1 . 余白の指定は、オ-ル0 の指定をしていますが「拡大/縮小」倍率が用紙サイズより常に小さく指定されます。できれば指定用紙サイズ一杯に印刷したいのです。その為に倍率の値が取得できれば得た値を何割か増やして印刷したいのですが。

  • エクセル記録したマクロを実行するとエラーがでます

    マクロを記録させ、実行しようとするとエラーがでます。 エラーメッセージは、 「コンパイルエラー 印数は省略できません。」 で、エラー箇所は下記の☆と☆の間です。 End With With ActiveSheet.PageSetup .LeftMargin = Application.InchesToPoints(0.31) .RightMargin = Application.☆InchesToPoints☆() .TopMargin = Application.InchesToPoints() .BottomMargin = Application.InchesToPoints() .HeaderMargin = Application.InchesToPoints() .FooterMargin = Application.InchesToPoints() .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = 1 .PrintErrors = 1620 End With 当方マクロの知識がないもので なぜそうなったのか、どうすれば解決するのかわかりません。 お力を貸して下さい。

  • エクセルVBAで複数ページのページ設定

    SheetAAAA,SheeetBBBB,SheetCCC,SheetDDDDの4枚(すべてのシートです)を選択し、ページ設定をしてマクロの記録をとりました。 Sub Macro6() Sheets(Array("AAAAA", "BBBBB", "CCCCC", "DDDDD")).Select Sheets("AAAAA").Activate With ActiveSheet.PageSetup .Orientation = xlLandscape .Draft = False .PaperSize = xlPaperA4 .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = 1 End With End Sub (不必要部分はカットしました) 自分で4枚を同時選択しページすると4枚すべてに反映するのですが、マクロの記録でつくったMacro6だと、1枚のシートにしか設定が反映されません。 どう直せばいいのでしょうか?よろしくお願いします。

  • EXCEL97で印刷がB4になってしまう!

    エクセルで横長の表を作成しました。 多少大き目なので印刷範囲を指定し、ページ設定で「拡大縮小印刷」で横1×縦1ページを選択しました。用紙サイズもA4を指定しました。(その結果縮小率は91%となります。) ところが印刷をかけると自動的にB4になってしまうのです。プリンターにはB4用紙を入れていませんので毎回印刷エラーになってしまいます。(B4用紙を入れればOK) そこでVBAでやってみようと、下記のようにしてみました。 Sub 表印刷() With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = "" .RightFooter = "" .LeftMargin = Application.InchesToPoints(0.590551181102362) .RightMargin = Application.InchesToPoints(0.590551181102362) .TopMargin = Application.InchesToPoints(0.118110236220472) .BottomMargin = Application.InchesToPoints(0.118110236220472) .HeaderMargin = Application.InchesToPoints(0) .FooterMargin = Application.InchesToPoints(0) .PrintHeadings = False .PrintGridlines = False .CenterHorizontally = True .CenterVertically = True .Orientation = xlLandscape .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = 1 End With ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End Sub しかしこれでやっても同じ結果でした。 なお、同ブックの他のページの表は正常に縮小印刷ができます。 原因と対策がまったくわからず困っています。 お助けください。

  • VBAの範囲印刷設定を修正したいのですが

    VBAの初心者です。詳しく教えてください。 1.下記のVBAでシートを非表示にしたときに実行時エラー1004が出るのですが  どうしたらよいのですか。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー Sub printappointedrange() Worksheets("シート1").Activate Range("A1:AB42").Select 'セル範囲の選択 With ActiveSheet .PageSetup.PrintArea = Selection.Address '印刷範囲の指定 .PrintOut '印刷 .PageSetup.PrintArea = False '印刷範囲のクリア End With End sub ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 2.シートに印刷ボタン作成して、印刷はできるのですが、印刷する前にプリンターの設定を変更する方法は無いのですか。

  • ExcelVBAの改ページの区切り位置が変更不可

    下記のようなコードで印刷プレビューを出して印刷するようにしたいのですが、改ページの位置が思い通りに変更されません。 3ページに印刷で、A19(B19)の行から2ページ目とA37(B37)の行から3ページ目にしたいのですが、印刷プレビューを見るとA20の行から2ページ目でA38の行から3ページ目になってしまいます。 HPageBreaks.Add Before:=Range("A19")←ここを色々違うセルに変えたり別のコードにかえたりしても、まったく反映されません。何かが邪魔をしているのでしょうか? どうしたら、任意の位置で改ページできるでしょうか?お願いいたします。 Sub 印刷プレビュー設定() Dim s As Worksheet Set s = ThisWorkbook.ActiveSheet With s '列非表示 .Columns("I:I").Select Selection.EntireColumn.Hidden = True 'ワークシートを選択、印刷範囲指定する .Select ActiveSheet.PageSetup.PrintArea = "$B$1:$O$54" '余白設定 .PageSetup.TopMargin = 0 .PageSetup.BottomMargin = 0 .PageSetup.LeftMargin = 0 .PageSetup.RightMargin = 0 '水平位置の中央へ .PageSetup.CenterHorizontally = True '垂直位置の中央へ .PageSetup.CenterVertically = True '用紙を横向きに設定 .PageSetup.Orientation = xlLandscape '用紙サイズを設定 .PageSetup.PaperSize = xlPaperA4 '印刷範囲を指定ページに収めて印刷プレビューを表示する .PageSetup.Zoom = False '拡大縮小倍率をFitToPagesの設定に収める .PageSetup.FitToPagesTall = 3 '縦の枚数 .PageSetup.FitToPagesWide = 1 '横の枚数 ActiveSheet.HPageBreaks.Add Before:=Range("A19") ActiveSheet.HPageBreaks.Add Before:=Range("A37") .PrintPreview End With End Sub

専門家に質問してみよう