前提・実現したいこと
テキストファイルのデータをexcelのセルに条件付きで書き込むVBAを作成したいのですが、テキストファイルがtxtファイルであれば作成できましたが、テキストファイルの拡張子が「ip」で書き込めるようにしたいです。作成したvbaだとtxtファイルなら上手く書き込めましたが、ipファイルだとうまく書き込むことができませんでした。
出力形式は、
ipファイルの中身が以下になっており、
data
{1997
8400
7777
}
{9111
5555
4444
}
ipファイルからexcelのセルに以下のように出力したいです。
1997 | 9111 |
---|---|
8400 | 5555 |
7777 | 4444 |
Open "C:\data.txt" For Input As #1 に直接ipファイルを指定したところ、
各セルにデータが割り振られず、一つのセルにすべてのデータが書き出されました。
どなたか詳しい方ご教授ください。
該当のソースコード
Sub fileinput() Dim buf As String Dim r As Long, c As Long Open "C:\data.txt" For Input As #1 Do Until EOF(1) Line Input #1, buf If InStr(buf, "{") Then r = 1 c = c + 1 Cells(r, c) = Mid(buf, 2) ElseIf IsNumeric(buf) Then r = r + 1 Cells(r, c) = buf End If Loop Close #1 End Sub
試したこと
ipファイルをtxtファイルに変更しても、同様に一つのセルにデータが書き出される結果となってしまいます。
また、試しに新たに作成したtxtファイルにipファイルのデータをコピー&ペーストしたところ、以下のエラーが発生しました。
「実行時エラー:1004 アプリケーション定義またはオブジェクト定義のエラーです。」
該当するソースコードは、Cells(r,c) = bufとなりました。
バイナリダンプ
↓txtファイル ADDRESS 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF ------------------------------------------------------------------------------ 00000000 64 61 74 61 0D 0A 7B 31 39 39 37 0D 0A 38 34 30 data..{1997..840 00000010 30 0D 0A 37 37 37 37 0D 0A 7D 0D 0A 7B 39 31 31 0..7777..}..{911 00000020 31 0D 0A 35 35 35 35 0D 0A 34 34 34 34 0D 0A 7D 1..5555..4444..} ↓ipファイル ADDRESS 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF ------------------------------------------------------------------------------ 00000000 64 61 74 61 0A 7B 31 39 39 37 0A 38 34 30 30 0A data.{1997.8400. 00000010 37 37 37 37 0A 7D 0A 7B 39 31 31 31 0A 35 35 35 7777.}.{9111.555 00000020 35 0A 34 34 34 34 0A 7D 5.4444.}
回答2件
あなたの回答
tips
プレビュー