ExcelファイルからPDFファイルやXPSファイルを作成する

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に保存し直す必要がなくなります。
ぜひお試しください。

コメント

タイトルとURLをコピーしました