PowershellでExcelのアクティブシートをCSV(UTF-8)で保存

Excelがインストールされていないと動きません

  1. それぞれ「xlsx2csv.bat」「xlsx2csv.ps1」をファイルに保存
  2. xlsxファイルをxlsx2csv.batにドラッグ&ドロップするとcsvファイルが作成されます

xlsx2csv.bat

powershell -NoProfile -ExecutionPolicy Unrestricted .\xlsx2csv.ps1 %1

xlsx2csv.ps1

if ( $args -eq $null ) {
    Write-Error '引数がありません'
}

if (Test-Path $args[0]) {
    $excel = New-Object -ComObject Excel.Application
    $excel.Visible = $false

    # 拡張子変更
    $newcsv = $args[0] -replace '\.xlsx$', '.csv'


    try {
        $book = $excel.Workbooks.Open($args[0])

        # UTF8 CSV
        $book.SaveAs($newcsv, 62)
        $book.Close($false)

    }
    catch {
        Write-Error 'エラーが発生しました'
    }
    finally {
        $excel.Quit()
        $excel = $null
        [GC]::Collect()
    }

}
else {
    Write-Error 'ファイルが見つかりません'
}