Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


15522 / 76734 ←次へ | 前へ→

【66689】Re:VBAでのcsvの取り込み
発言  kanabun  - 10/9/26(日) 0:43 -

引用なし
パスワード
   ▼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

こんなふうにも書けるとおもいます。

0 hits

【66687】VBAでのcsvの取り込み VBA初心者 10/9/25(土) 23:59 質問
【66688】Re:VBAでのcsvの取り込み Abyss 10/9/26(日) 0:39 発言
【66689】Re:VBAでのcsvの取り込み kanabun 10/9/26(日) 0:43 発言
【66691】Re:VBAでのcsvの取り込み VBA初心者 10/9/26(日) 11:11 お礼

15522 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free