teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

コード例の追記

2017/05/07 15:36

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -5,4 +5,35 @@
5
5
  ただ、よほど大きなファイルでないなら、ReadAll で一気にメモリに読み込んで、
6
6
  Splitで改行で分割、分割したものを、さらにTabで分割して処理する。
7
7
  で一つの文字列変数にまとめて、Writeで一気に書き込む、というようにした方が
8
- 高速に処理できます。
8
+ 高速に処理できます。
9
+
10
+ 追記
11
+ ---
12
+
13
+ 下記のような感じのコードになります。ご参考に。
14
+ ```
15
+ '全文読み込み
16
+ strTxt = objReadStream.ReadAll
17
+ '改行で分割、1行毎の配列
18
+ aryLine = Replace(strTxt, vbCrLf)
19
+
20
+ For i = LBound(aryLine) To UBound(aryLine)
21
+ 'タブで分割、列毎の配列
22
+ aryCol = Split(aryLine(i), vbTab)
23
+
24
+ aryCol(0) = aryCol(0) & "," 'カンマ区切り付加
25
+ aryCol(1) = aryCol(1) & "," 'カンマ区切り付加
26
+ aryCol(2) = "" '不要なカラム(3列目)の削除
27
+ aryCol(3) = aryCol(3) & "," 'カンマ区切り付加
28
+
29
+ '以下、配列に対して列の移動、テキスト変更等の処理
30
+
31
+ aryLine(i) = Join(aryCol, "") '列を結合して行に戻す
32
+ Next i
33
+
34
+ strTxt = Join(aryLine, vbCrLf) '行を改行区切りで結合
35
+
36
+ 'ファイルに出力
37
+ objWriteStream.Write strTxt
38
+
39
+ ```