LoginSignup
0
0

PowershellからOfficeの印刷ページ設定操作

Last updated at Posted at 2023-09-06

ネット上にあまり情報が無かった(特にマージン設定とか)ので検索にかかる様残して置きます。
PowershellからOfficeで印刷をする際のページ設定について。
ここではExcelを例にしています。

Powershell
# Excelオブジェクトの作成
$excel = New-Object -ComObject Excel.Application

# 可視設定(Powershellからは$True/$False)で指定
$excel.Visible = $True

# 読み込みファイルパス取得、この例では同DIRのoutput.csvを指定
$excelFile = (Get-ChildItem "output.csv").FullName

# Excelを開く
$book = $excel.Workbooks.Open($excelFile)

# 1シート目を取得(インデックスは1から始まる)
$sheet = $book.Sheets(1)


# ここから印刷設定(PowershellでWithは使えない)

# ズーム設定。明示的にFalseにしないと印刷範囲が正しくならない事がある
$sheet.PageSetup.Zoom = $False

# 最上行を固定して印刷時に常時表示させる
$sheet.PageSetup.PrintTitleRows = "1:1"

# 幅に収まる様に自動でスケーリングする
$sheet.PageSetup.FitToPagesWide = 1

# 縦幅自動スケーリングを明示的に無効にする(0代入ではダメ)
$sheet.PageSetup.FitToPagesTall = $False

# 印刷向きを横に指定
$sheet.PageSetup.Orientation = 2

# 各種マージン指定。数値直で代入はエラーにならず反映もされない
$sheet.PageSetup.TopMargin = $excel.CentimetersToPoints(1)
$sheet.PageSetup.BottomMargin = $excel.CentimetersToPoints(0)
$sheet.PageSetup.LeftMargin = $excel.CentimetersToPoints(0)
$sheet.PageSetup.RightMargin = $excel.CentimetersToPoints(0)
$sheet.PageSetup.HeaderMargin = $excel.CentimetersToPoints(0)
$sheet.PageSetup.FooterMargin = $excel.CentimetersToPoints(0)

# ヘッダー&フッター追加
$sheet.PageSetup.LeftHeader = ""
$sheet.PageSetup.CenterHeader = ""
$sheet.PageSetup.RightHeader = "&P of &N"
$sheet.PageSetup.LeftFooter = ""
$sheet.PageSetup.CenterFooter = ""
$sheet.PageSetup.RightFooter = ""

# 印刷(Powershell上で括弧を省略するとエラーとなるケースが多いので注意)
$sheet.PrintOut()

使えるVBAコードはここ参考
https://learn.microsoft.com/ja-jp/office/vba/excel/concepts/workbooks-and-worksheets/formatting-and-vba-codes-for-headers-and-footers

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0