「word 2007 vba ページ設定 横」
という検索で、このサイト『インストラクターのネタ帳』へアクセスがあることに気づきました。
[ページ設定]ダイアログ-[余白]タブ-[印刷の向き]欄で、「横」を指定する操作を、
VBAでどう書けばいいのかを探していた方による検索でしょうか。
ページ設定をマクロ記録した場合
[ページ設定]ダイアログで印刷の向きを横にする操作を、マクロ記録してみると以下のようなコードが作られます。
With ActiveDocument.PageSetup .LineNumbering.Active = False .Orientation = wdOrientLandscape .TopMargin = MillimetersToPoints(30) .BottomMargin = MillimetersToPoints(30) .LeftMargin = MillimetersToPoints(30) .RightMargin = MillimetersToPoints(35) .Gutter = MillimetersToPoints(0) .HeaderDistance = MillimetersToPoints(15) .FooterDistance = MillimetersToPoints(17.5) .PageWidth = MillimetersToPoints(297) .PageHeight = MillimetersToPoints(210) .FirstPageTray = wdPrinterDefaultBin .OtherPagesTray = wdPrinterDefaultBin .SectionStart = wdSectionNewPage .OddAndEvenPagesHeaderFooter = False .DifferentFirstPageHeaderFooter = False .VerticalAlignment = wdAlignVerticalTop .SuppressEndnotes = False .MirrorMargins = False .TwoPagesOnOne = False .BookFoldPrinting = False .BookFoldRevPrinting = False .BookFoldPrintingSheets = 1 .GutterPos = wdGutterPosLeft .LayoutMode = wdLayoutModeLineGrid End With
見慣れないと、なかなか威圧感のあるコードです。
[ページ設定]ダイアログで設定できる項目がすべてコード化されるために、このような状態になってしまいます。
アクティブな文書を横向きにするサンプルマクロ
アクティブドキュメントの印刷の向きを横にするだけならば、以下のようなコードでOKです。
ActiveDocument.PageSetup.Orientation = wdOrientLandscape
End Sub
PageSetupオブジェクトに用意されているOrientationプロパティを使うと、印刷の向きを取得・設定できます。
先のマクロ記録でできたコードなら、はじめのほうにある
.Orientation = wdOrientLandscape
が、印刷の向きを指定している箇所です。
PageSetupオブジェクトのOrientationプロパティに、上記のように定数wdOrientLandscapeを指定すれば横向きになり、定数wdOrientPortraitを指定した場合は縦向きになります。
設定対象をこれ以降にした場合
[ページ設定]ダイアログには[設定対象]という項目があり、設定をどの範囲に及ぼすのかを指定できます。
この中に「これ以降」という選択肢があるので、これを選んでマクロ記録してみると、なかなか興味深いコードが作られました。
Orientationプロパティだけを切り出すと、以下のようなコードです。
With ActiveDocument.Range(Start:=Selection.Start, End:=ActiveDocument. _ Content.End).PageSetup .Orientation = wdOrientLandscape End With
Withキーワードを削除して、改行位置を整理すると、以下のようなコードになります。
ActiveDocument _ .Range( _ Start:=Selection.Start, _ End:=ActiveDocument.Content.End) _ .PageSetup.Orientation = wdOrientLandscape
DocumentオブジェクトのRangeメソッドの、
第1引数StartにSelection.Startとカーソルのある位置を指定し、
第2引数EndにActiveDocument.Content.Endとアクティブ文書の最後を指定することで、
「これ以降」という指示にしているわけです。
私が自分でマクロを作るとしたら、カーソルのあるセクションから、最後のセクションまでループを回して、各セクションのPageSetup.OrientationプロパティにwdOrientLandscapeを設定するというロジックにしていたはずなので、とても興味深いコードに感じます。
最終更新日時:2020-11-25 10:35
Home » ワードマクロ・Word VBAの使い方 » ページ設定・PageSetup » Word VBAで印刷の向きを横にする