• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Exsel2000ページ設定(VBA)について)

Exsel2000ページ設定(VBA)での余白設定について

Wendy02の回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 まず最初に、 .LeftMargin  の設定がないようなのですが、デフォルトでは、Excelとプリンタ・ドライブとの間で決められている、「デフォルト余白」か、予め設定している余白になるはずだと思います。それでは、「0」にすると、どうなるかというと、「物理的余白」になります。。 しかし、反対側の右の余白(.RightMargin)「0」は、物理的にはありえないようになっています。論理値だけです。 それは、つまり、これは別の見方をすると、 左の物理的余白+左の設定余白+    (セルの幅の積み上げ+セルの調整余白)>設定用紙の幅  (あくまでも、この計算の考え方は、私の推測から作られたものです。) それで、その(論理的)計算で、もしも、設定用紙の幅より超えることがあれば、セルの自動改行が途中で入ります。これは、物理的な計算ではありません。 ただ、いずれにしても、こういうのは、VBA限定の処理では、あまりうまくいかないひとつです。おそらく、Excel内部で設定しているからなのだと思います。 なお、それらの設定値は、ポイントになっていますので、気をつけてください。 幅が収まらないときのサンプルコードです。 MsgBox のところに、実行に必要なコードを入れ替えてください。 Sub testsample() Dim vc As Variant   vc = ExecuteExcel4Macro("COLUMNS(GET.DOCUMENT(65))")   If Not IsError(vc) Then    If vc > 1 Then     MsgBox "幅が、1枚に収まりません。"    End If   End If End Sub

asuka546
質問者

お礼

ご回答ありがとうござます。 左については、「デフォルトの余白」でいいかなと思っていたのですが、全部設定したほうが良いのかもしれないと思い「55」ポイントで設定しようと思います。 右の余白は出来る限りいっぱいまでというつもりで「0」にしたのですが、実際「10」ぐらいにしても変わらないくらいの余白が空くので(5mmぐらい)、「0」としておくよりは「10」にしておいたほうが良いのかもしれません。 問題の自動改行ですが、 サンプルコードを使用してみた結果、 自動改行されたシートはどうもエクセルのなかでは1枚のつもりらしくちゃんと機能してくれません(印刷すると2枚なのに)、印刷範囲の設定をするとやっと「幅が1枚に~」のメッセージボックスが出てきました。 印刷範囲はデータの行の終点が毎回違うため(たまにノーデータがあるためendも使えない)、設定しにくくなっています。(列数は固定です) もうちょっと良い手を考えてみます。 ありがとうございました。 ちなみに”DOCUMENT(65)”とは何を意味しているのでしょうか?ネットで調べたのですがGET.DOCUMENT関数というのがあるのはわかったのですが使い方まで書いていませんでした(泣) お手数おかけします。よろしくお願いいたします。

asuka546
質問者

補足

<お礼に対する補足> 結局、列数は変わらないのに一定のセル幅の増減があるため横が入りきらなくなることを考え、 ぎりぎり1枚で収まる幅を確認してそれ以上の列幅であればページ設定を変更するというマクロにしました。 ご迷惑をおかけして申し訳ありませんでした。 'ページ設定 e = Range("B1").Width Set SENTAKU = Workbooks(3).Sheets(1) If e < 132 Then With SENTAKU.PageSetup .Orientation = xlLandscape .Zoom = 55 .LeftMargin = 55 .TopMargin = 55 .BottomMargin = 20 .RightMargin = 10 .PrintTitleRows = "$2:$5" End With Else With SENTAKU.PageSetup .Orientation = xlLandscape .Zoom = 50 .LeftMargin = 45 .TopMargin = 55 .BottomMargin = 20 .RightMargin = 10 .PrintTitleRows = "$2:$5" End With End If

関連するQ&A

  • 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 というようなマクロを作って実行すると プレビュー画面が出るまでに かなり時間がかかるのです。 職場のパソコンであるため パソコンそのものがかなり古いのですが マクロを使わずに直接、印刷の設定をすれば すぐにプレビューが表示されます。 ただ、同じシートをいろいろな方法で印刷する必要があるため マクロを組んでみたわけです。 ちょっと我慢すればいいだけで 仕事そのものに大きく影響するわけではありませんが 皆様のご助言をよろしくお願いいたします。

  • EXCEL VBAでシートの余白を統一したい。

    こんばんは。 EXCEL VBAでひとつのファイルの中のすべてのシートの余白とA4横サイズに統一したいのです。 マクロの記録をとると With ActiveSheet.PageSetup .PrintTitleRows = "" .PrintTitleColumns = "" End With ActiveSheet.PageSetup.PrintArea = "" With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = "" .RightFooter = "" .LeftMargin = Application.InchesToPoints(0.393700787401575) .RightMargin = Application.InchesToPoints(0.393700787401575) .TopMargin = Application.InchesToPoints(0.393700787401575) .BottomMargin = Application.InchesToPoints(0.393700787401575) .HeaderMargin = Application.InchesToPoints(0) .FooterMargin = Application.InchesToPoints(0) .PrintHeadings = False .PrintGridlines = False .PrintComments = xlPrintNoComments .PrintQuality = 600 .CenterHorizontally = False .CenterVertically = False .Orientation = xlLandscape .Draft = False .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = 100 .PrintErrors = xlPrintErrorsDisplayed End With End Sub このように記述されますが、どのように加工したらよろしいでしょうか? 教えてください。

  • 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

  • エクセル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枚のシートにしか設定が反映されません。 どう直せばいいのでしょうか?よろしくお願いします。

  • 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

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

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

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

    マクロを記録させ、実行しようとするとエラーがでます。 エラーメッセージは、 「コンパイルエラー 印数は省略できません。」 で、エラー箇所は下記の☆と☆の間です。 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 当方マクロの知識がないもので なぜそうなったのか、どうすれば解決するのかわかりません。 お力を貸して下さい。

  • エクセルのマクロについて

    エクセルの印刷マクロを作りましたが、動作が非常に遅いのです。 スタッフ用と管理者用のマクロを作り、スタッフ用が遅いのです。 余計なものが含まれているのでしょうか? お願いします。 Sub スタッフ() ' スタッフ Macro   ActiveSheet.PageSetup.PrintArea = "$A$1:$AJ$55" With ActiveSheet.PageSetup .PrintTitleRows = "" .PrintTitleColumns = "" End With ActiveSheet.PageSetup.PrintArea = "$A$1:$AJ$55" With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = "" .RightFooter = "" .LeftMargin = Application.InchesToPoints(0) .RightMargin = Application.InchesToPoints(0) .TopMargin = Application.InchesToPoints(0) .BottomMargin = Application.InchesToPoints(0) .HeaderMargin = Application.InchesToPoints(0) .FooterMargin = Application.InchesToPoints(0) .PrintHeadings = False .PrintGridlines = False .PrintComments = xlPrintNoComments .CenterHorizontally = True .CenterVertically = True .Orientation = xlLandscape .Draft = False .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = 76 .PrintErrors = xlPrintErrorsDisplayed End With ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ActiveSheet.PageSetup.PrintArea = "$A$1:$AJ$60" With ActiveSheet.PageSetup .PrintTitleRows = "" .PrintTitleColumns = "" End With ActiveSheet.PageSetup.PrintArea = "$A$1:$AJ$60" With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = "" .RightFooter = "" .LeftMargin = Application.InchesToPoints(0) .RightMargin = Application.InchesToPoints(0) .TopMargin = Application.InchesToPoints(0) .BottomMargin = Application.InchesToPoints(0) .HeaderMargin = Application.InchesToPoints(0) .FooterMargin = Application.InchesToPoints(0) .PrintHeadings = False .PrintGridlines = False .PrintComments = xlPrintNoComments .CenterHorizontally = True .CenterVertically = True .Orientation = xlLandscape .Draft = False .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = 70 .PrintErrors = xlPrintErrorsDisplayed End With Range("A1").Select End Sub

  • EXCELの複数のシートに同じページ設定をしたいです

    いつもお世話になっております。 マクロに初挑戦です。 すでに作成してあるブックに、同じページ設定をしたいです。 「マクロの記録」で、以下のマクロを作成しました。 Excel2003です。 Sub PageSetting() ' Keyboard Shortcut: Ctrl+Shift+F With ActiveSheet.PageSetup .RightHeader = "&A" '右上にシート名 .CenterFooter = "- &P -" '下中央にページ番号 .RightMargin = Application.InchesToPoints(0.393700787401575) '右余白1cm .TopMargin = Application.InchesToPoints(0.78740157480315) '上余白2cm .BottomMargin = Application.InchesToPoints(0.393700787401575) '下余白1cm .HeaderMargin = Application.InchesToPoints(0.590551181102362) 'ヘッダー1.5cm .FooterMargin = Application.InchesToPoints(0.196850393700787) 'フッター0.5cm End With End Sub ブック内のすべてのシートに適用するわけではないので、 複数シートを選択しておいて(作業グループ)、 まとめて適用したいのですが、どうすればよいのでしょうか? 今現在は、設定したいシートを1つずつ選択して、 Ctrl+Shift+F を押しています。 よろしくご指導お願い致します。

  • 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 しかしこれでやっても同じ結果でした。 なお、同ブックの他のページの表は正常に縮小印刷ができます。 原因と対策がまったくわからず困っています。 お助けください。