|
▼VBA初心者 さん:
>VBAでcsvファイルを取り込みたいと考えていますが、
>以下のマクロだと文字列のまま取り込まれてしまいます。
変数の↓を
>Dim str() As String
Variant型にしてみてください。なお、「str」はそういう名前の
組み込み関数があるから、別の変数名にしたほうがいいでしょう
すこし高速に読み込むなら、
Sub Try1()
Dim csvFile As String
Dim ch As Integer
Dim b() As Byte
Dim csvStr As String
Dim dat As Variant
Dim v As Variant
Dim i As Long, j As Long
Dim n As Long, m As Long
'CSVファイル名
csvFile = Application.GetOpenFilename("CSVファイル,*.csv")
ch = FreeFile()
Open csvFile For Binary As #ch
ReDim b(1 To LOF(ch))
Get #ch, , b()
Close #ch
csvStr = StrConv(b(), vbUnicode)
dat = Split(csvStr, vbCrLf)
n = UBound(dat) - 1
m = UBound(Split(dat(0), ","))
ReDim dt(n, m)
For i = 0 To n
v = Split(dat(i), ",")
For j = 0 To m
dt(i, j) = v(j)
Next
Next
With Range("A1")
.CurrentRegion.ClearContents
.Resize(n + 1, m + 1).Value = dt()
End With
End Sub
こんなふうにも書けるとおもいます。
|
|