Excel VBAでCSV(Comma-Separated Values)形式のデータを扱う際に、セルに0が含まれている場合に0が消失する問題(0落ち)があります。これを回避し正確なデータにします。
CSV形式のファイルからデータを読み込む際、セルに先頭に0が含まれている場合、0が欠損する場面があります。
たとえば、数値をつかったコードで0001は1に、日付の2024/01/05は2024/1/5になります。
CSVファイルを読み込む際に、セル内の値が0であるかどうかを確認して、必要に応じて対策することで0落ちを回避します。
なかには、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出力」
毎日のルーチン作業をExcel VBAで自動化し、時間を有効活用しませんか?Excel VBAエキスパート資格取得問題集を活用して資格取得、そして効率的な仕事を実現しましょう!
VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。
ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。
ExcelVBAエキスパートスタンダード
ExcelVBAの開発を仕事にする人が対象の問題集です。
Excel VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。
ExcelVBAの学習方法で効果的な学び方を知りたい方は、下記「Excel VBA初心者のための効果的な学習ガイド」をご確認ください。