Excel VBAのQueryTablesで0落ちを回避する設定

 

Excel VBAでCSV(Comma-Separated Values)形式のデータを扱う際に、セルに0が含まれている場合に0が消失する問題(0落ち)があります。これを回避し正確なデータにします。

 

Excel VBAで0落ちが発生するデータ

CSV形式のファイルからデータを読み込む際、セルに先頭に0が含まれている場合、0が欠損する場面があります。

たとえば、数値をつかったコードで0001は1に、日付の2024/01/05は2024/1/5になります。

 

0落ち回避のやり方

CSVファイルを読み込む際に、セル内の値が0であるかどうかを確認して、必要に応じて対策することで0落ちを回避します。

 

ポイント

なかには、0落ちしていい項目もあるので、事前に項目編集内容がどうなるのが正解か確認したほうがいいでしょう。

 

Excel VBAで0落ち除算を回避するサンプルコード
    ' CSVファイルをExcelブックにインポート
    With newWb.Sheets(1).QueryTables.Add(Connection:= _
        "TEXT;" & filePath, Destination:=newWb.Sheets(1).Range("A1"))
        .TextFileParseType = xlDelimited
        .TextFileCommaDelimiter = True ' カンマ区切りの場合
        .TextFilePlatform = 65001 ' UTF-8の場合
        .TextFileColumnDataTypes = columnDataTypes ' 各列のデータ型を指定
        .Refresh
    End With

CSVをQueryTablesを使いExcelに展開します。このコードで0落ちを回避している箇所は、.TextFileColumnDataTypes = columnDataTypes  は各列のデータ型指定になります。

 

上記に記載していませんが、columnDataTypes =Array(2, 2, 2, 2, 2, 2, 2)と事前にセットします。2は列のデータ形式で文字列です。データ項目数分設定すれば文字列扱いでExcelに展開できます。

 

CSVからExcel出力の詳しい内容を知りたい方は、下記ページをチェックしてください。

ExcelVBAを実務で活用する方法「CSVからExcel出力」