2015年4月24日金曜日

ExcelVBAで TSV/CSVファイルを読み込むとき、数値の先頭にある0を残す方法

ExcelVBAでTSV/CSVファイルを開くときに"Workbooks.open"を使うとある問題が起きることが発覚しました。 数値の頭に"0"を含んでいると、それが消えてしまうのです。

あえて先頭の0を残すにはどうしたらいいのか、調べてみたところ"Workbooks.OpenText"を使えばよいことがわかりました。 "Workbooks.OpenText"で開くと書式が文字列になるので、先頭の0が残るんですね。
サンプルコード
praivate sub file_open(sFilePath as string)
'引数は開きたいファイルのパス

 Dim vTmpInfo(256) As Variant
    Dim i As Integer
    
    For i = 0 To 256
        vTmpInfo(i) = Array(i, 2)※
    Next
    
   Workbooks.OpenText filename:=sFilePath, _
   Origin:=932, DataType:=xlDelimited, TextQualifier:= xlDoubleQuote, Tab:=True, _
   FieldInfo:=vTmpInfo, TrailingMinusNumbers:=True
    
読み込むときのデータ形式の指定について
※vFieldInfoは読み込むときのデータの形式を指定するパラメーター。 (行番号,データ形式)で指定する。 データ形式はこちら。
  • xlGeneralFormat 1(一般形式)
  • xlTextFormat 2(テキスト形式)
  • xlYMDFormat 5(YMD 日付形式)
文字コードの指定
"Origin:=932"で行っているのは、UTF-8形式でファイルを開くという指定です。

この記事はお役に立てたでしょうか?
もし参考になると思っていただけたら、こちらのボタンから共有をお願いします。

このエントリーをはてなブックマークに追加