Hey Scripting Guy! BLOG(海外サイト) は今週はExcel特集をしているようです。
その中で、ExcelファイルをPDFとして保存する記事がありました。
ネタ元「Save a Microsoft Excel Workbook as a PDF File by Using PowerShell」
この記事のスクリプトをちょっと加工して、次のような関数を作成したので紹介します。
function Convert-Xls([string]$path, [switch]$xps)
{
$xlFixedFormat = "Microsoft.Office.Interop.Excel.xlFixedFormatType" -as [type]
# Excelオブジェクトの作成
$objExcel = New-Object -ComObject Excel.Application
$objExcel.Visible = $False
$workbook = $objExcel.workbooks.Open($path, 3)
$workbook.Saved = $True
# ファイル名からフルパスを取得して拡張子を外す
$fullpath = [System.IO.Path]::GetFullPath($path)
$filepath = [System.IO.Path]::GetFileNameWithoutExtension($fullpath)
if ( $xps )
{
# XPSとして保存する
$workbook.ExportAsFixedFormat($xlFixedFormat::xlTypeXPS, $filepath + ".xps")
}
else
{
# PDFとして保存する
$workbook.ExportAsFixedFormat($xlFixedFormat::xlTypePDF, $filepath + ".pdf")
}
# Excelの終了
$objExcel.Workbooks.Close()
[void]$objExcel.Quit
}
この関数を使用すると、任意のExcelファイルからPDFやXPSファイルを作成することができます。
書式は
Convert-Xls PDFやXPSの作成元となるExcelファイルのパス [-XPS]
たとえば C:\Work\Test.xls からPDFを作成するには
Convert-Xls C:\Work\Test.xls
もしもXPSファイルを作成したい場合はスイッチパラメータ -XPS を使用して下記のように記述します。
Convert-Xls C:\Work\Test.xls -XPS
この関数を使用すれば、わざわざExcelを起動してPDFやXPSに保存し直す必要がなくなります。
ぜひお試しください。

コメント