【PowerShell】CSVファイルをExcelファイルにする

CSVファイルを…

CSVファイル
CSVファイル


Excelファイルにできます!

CSVファイルをExcelファイルにした
CSVファイルをExcelファイルにした


CSVファイルに「001」とある場合、
シート上も「001」となるようにします!
※0が消えて「1」とならないようにします。

PR

VBAコード

ここでは例として
 ・デスクトップ配下のCSVファイル「sample.csv」をExcelファイル
にします。

CSVファイル。文字コードは「Shift_JIS」
CSVファイル。文字コードは「Shift_JIS」
# CSVファイル
$csvFile = "C:\Users\user\Desktop\sample.csv"
# 出力するExcelファイルのパス
$outputExcelFile = "C:\Users\user\Desktop\output.xlsx"
# シート名
$loadSheetName  = "csv"
# 書き出し開始セル
$startRange = "B2"
# テーブル名を指定
$tableName = "テストテーブル"

$ws = New-Object -ComObject Wscript.Shell

try
{
    # 既にExcelファイルが存在したら削除
    if (Test-Path $outputExcelFile) {
        Remove-item -Force $outputExcelFile -ErrorAction Stop
    }

    # ExcelのCOMコンポーネントを取得
    $excel = New-Object -ComObject Excel.Application

    # ブックを新規作成しオブジェクトを取得
    $book = $excel.Workbooks.Add()
    # ブックの1シート目のオブジェクトを取得
    $sheet = $book.Worksheets.Item(1)
    # シート名を変更
    $sheet.name = $loadSheetName 

    # 出力列(書き出し開始セルの列)
    $outputColumn = $sheet.Range($startRange).Column
    # 出力行(書き出し開始セルの行)
    $outputRow = $sheet.Range($startRange).Row

    # 読み込むファイルの形式を【2:文字列】と指定するための配列を作成
    $arrDataType = @()
    for ($i=0; $i -lt 255; $i++){
        $arrDataType += 2
    }

    # 「QueryTableオブジェクト(=クエリと接続)」を作成
    $QueryTable = $sheet.QueryTables.Add("TEXT;$csvFile",$sheet.cells($outputRow,$outputColumn))
    # 区切り文字に「カンマ区切り」を指定
    $QueryTable.TextFileCommaDelimiter = $True
    # 文字コードに「Shift_JIS」を指定
    $QueryTable.TextFilePlatform = 932
    # 読み込み開始行を指定
    $QueryTable.TextFileStartRow = 1
    # 読み込むファイルの形式を指定
    $QueryTable.TextFileColumnDataTypes = $arrDataType[0..255]
    # 読み込み実行
    $QueryTable.Refresh($false)
    # 名前を指定(後続処理で削除できるようにするため)
    $QueryTable.Name = "仮テーブル"
    # 作成された「QueryTableオブジェクト(=クエリと接続)」を削除
    $QueryTable.Delete()
 
    # 上記で作成されてしまう名前定義(仮テーブル)を削除
    foreach($n in $book.Names){
        If ($n.Name -Like $loadSheetName + "!" + "仮テーブル*") {
            $n.Delete()
        }
    }

    # 表をテーブル化
    $sheet.ListObjects.Add(1,$sheet.Range($startRange).CurrentRegion,0,1).Name = $tableName
    # ブックを保存
    $book.SaveAs($outputExcelFile)

    $ws.popup("CSVファイルをExcelファイルにしました。")
}
catch
{
    $ws.popup("エラー : " + $PSItem)
}
finally
{
    # Excelを終了
    $excel.Quit()
    [System.Runtime.InteropServices.Marshal]::FinalReleaseComObject($excel) | Out-Null
}

以下を指定します。
※状況に応じて任意の値を指定してください。

・CSVファイル(2行目)
・出力するExcelファイルのパス(4行目)
・シート名(6行目)
・書き出し開始セル(8行目)
・テーブル名(10行目)

表をテーブル化します(67行目)。

PR

実行結果

SVファイルをExcelファイルにできました。

実行結果①
実行結果①
実行結果②
実行結果②
PR

参考

上記のVBAコードは以下の記事を参考にして作成しました。

●PowerShellでExcelファイルを新規作成する


●VBAでCSVファイルをシートへ読み込む

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