区切り文字が設定できないファイルをExcelで読み込む

Excel VBA

問い合わせ内容

いつものごとく関連部門からExcelについての問い合わせがありました。

拡張子が”.dat”のデータをExcelで読込みたいのだけど、どうやったらいいの?

通常であれば1行ごとに改行コードがあるため、区切り文字を指定して読み込めば何とかなるのではと思い

そのファイルをメールで送信して
わかりました、メールで送信します。


そのファイルを見て”甘かった”というのが感想でした。
カンマどころか、区切り文字にできそうな文字もなければ、改行コードもなく、普通に読み込んでしまうと、ひとつのセルに格納されてしまう厄介なファイルでした。 さらには、ひとつのセルには収まらない長さのデータでした。

VBAでプログラムを作成するしかないですね。
お願いします。どのくらいでできる?
げっ!

改行コードのないファイルを読み込んでシートに貼り付けるプログラムを作成する

プログラムの構成

  1. 読み込むデータのファイルレイアウトを定義する
  2. 変数を定義する
  3. 読み込むファイルを選択する
  4. ファイルサイズに到達するまで1レコード単位に分割しながらデータを読み込む
  5. シートに書き出す

実際のコーデイング

レコードレイアウトの定義

Option Explicit
Private Type 仕分マスター
便 As String * 1 ‘ 便
店 As String * 6 ‘ 店番号
ゾーン As String * 2 ‘ゾーン
棚 As String * 2 ‘棚
バッファ As String * 5 ‘バッファ
End Type

実行するプログラムのコーデイング

Sub マスター読み込み()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Const レコード長 = 16     ← 1レコードに該当する長さ
Dim 読込ファイル As String  ← 読み込むファイル名
Dim ファイルサイズ As Long  ← 読み込むファイルのファイルサイズ
Dim 読込位置 As Long
Dim 出力行 As Long
Dim 出力レイアウト As 仕分マスター
Dim マスター(2000, 0) As Variant
‘シートをクリアする
Sheets(1).Range(“a:a”).ClearContents
MsgBox “読み込むファイルを選んで下さい”
読込ファイル = Application.GetOpenFilename(“データ,*.dat?”)
If 読込ファイル <> “False” Then
     Open 読込ファイル For Binary As #1
     ファイルサイズ = LOF(1)
     読込位置 = 1 ‘読み込み位置
     出力行 = 1 ‘1行目から書き込み開始
     Do Until 読込位置 >= ファイルサイズ ← ファイルサイズ以上になるまでデータを読み込む
          Get #1, 読込位置, 出力レイアウト
          マスター(出力行, 0) = 出力レイアウト.便 & 出力レイアウト.ゾーン & 出力レイアウト.棚 & 出力レイアウト.店
          読込位置 = 読込位置 + レコード長
         出力行 = 出力行 + 1
     Loop
     close #1
     sheets(1).Range (“A1:A” & 出力行) = マスター  ← 2次元配列のデータをワークシートに書き出す
Else
     MsgBox “読込ファイルの指定がキャンセルされました”, vbOKOnly
End If
endsub:
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
完成
タイトルとURLをコピーしました