回答編集履歴
1
コード追記
test
CHANGED
@@ -19,3 +19,109 @@
|
|
19
19
|
|
20
20
|
|
21
21
|
上記で正しく取り込めたら、マクロの起動で、同じ操作をしてVBAに変換して、それをもとに作成したらどうでしょう。
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
---
|
26
|
+
|
27
|
+
ファイルがCSVの仕様に沿ったものなら、上記の方法でうまくいくはずなんですが、
|
28
|
+
|
29
|
+
自前のコードでいくなら、下記のような方針でいくといいでしょう。
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
読み込んだテキスト全文のカンマを別の区切り文字(テキストに含まれていない文字)に置換する。ただし、引用符(")に囲まれている部分のカンマは置換しない。(自作関数)
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
その後、引用符(")を削除する(必要ならば)。
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
後は、テキストをレコード区切り文字で分割して配列にする。
|
42
|
+
|
43
|
+
今回のものだと行頭に#があるのでそれをレコード区切り文字とする。
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
レコード配列をループで順に読み込んで、置換した区切り文字で分割して配列にして、その配列をセル範囲に代入する。
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
上記の方針で作成したコード例
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
```vba
|
56
|
+
|
57
|
+
Sub csv_import3()
|
58
|
+
|
59
|
+
’前略 ファイル読み込み処理
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
Dim buf As String
|
64
|
+
|
65
|
+
buf = .ReadText
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
'カンマをセミコロンに置換
|
70
|
+
|
71
|
+
buf = ReplaceSeparator(buf, ",", ";")
|
72
|
+
|
73
|
+
buf = Replace(buf, """", "") '引用符(")を削除
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
Dim records, i As Long
|
78
|
+
|
79
|
+
records = Split(buf, "#") '#で分割して配列に
|
80
|
+
|
81
|
+
For i = 0 To UBound(records)
|
82
|
+
|
83
|
+
If i > 0 Then records(i) = "#" & records(i)
|
84
|
+
|
85
|
+
Dim items
|
86
|
+
|
87
|
+
items = Split(records(i), ";") ’セミコロンで分割して配列に
|
88
|
+
|
89
|
+
’配列をセル範囲に代入
|
90
|
+
|
91
|
+
Worksheets(1).Cells(i + 1, 1).Resize(, UBound(items) + 1).Value = items
|
92
|
+
|
93
|
+
Next
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
'後略
|
98
|
+
|
99
|
+
End Sub
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
'引用符(")で固まれた部分以外の区切り文字を置換する
|
104
|
+
|
105
|
+
Function ReplaceSeparator(s As String, Separator1 As String, Separator2 As String) As String
|
106
|
+
|
107
|
+
Dim ary
|
108
|
+
|
109
|
+
ary = Split(s, """")
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
Dim i As Long
|
114
|
+
|
115
|
+
For i = 0 To UBound(ary) Step 2
|
116
|
+
|
117
|
+
ary(i) = Replace(ary(i), Separator1, Separator2)
|
118
|
+
|
119
|
+
Next
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
ReplaceSeparator = Join(ary, """")
|
124
|
+
|
125
|
+
End Function
|
126
|
+
|
127
|
+
```
|