CSVの読み込み処理について
こんばんわです。
エクセルのVBAをつかってCSV形式のファイルデーターを読み込みように某サイトを参考に作成しました。
確かに読み込む事が出来たのですが、数値も文字列扱いになってしまいます。
数値処理する方法があるのでしょうか?
Sub CSV_Read2()
Dim FileType, Prompt As String
Dim FileNamePath As Variant
Dim textline, csvline() As String
Dim Rowcnt, ColumNum As Integer
Dim ch1 As Long
FileType = "CSV ファイル (*.csv),*.csv"
Prompt = "CSV File を選択してください"
'操作したいファイルのパスを取得します
FileNamePath = SelectFileNamePath(FileType, Prompt)
If FileNamePath = False Then 'キャンセルボタンが押された
End
End If
'空いているファイル番号を取得します
ch1 = FreeFile
'FileNamePath のファイルをオープンします
Open FileNamePath For Input As #ch1
'エラーが発生したらファイルを閉じます
'CSVのファイルは1行の項目数が正確に合っていないと読めないのですが、
'色々なCSVがあるようなので入れておきます
On Error GoTo CloseFile
'表の行番号の初期化 1行目から読み込んだデータを入力します
Rowcnt = 1
Do While Not EOF(ch1) 'ファイルの終端かどうかを確認します。
'1行読み込みます
Line Input #ch1, textline
'ダブルクォーテーションを削除します
'カンマ+ダブルクォーテーションで区切られている CSV ファイルなどは
'適時追加してください
textline = Replace(textline, """", "")
'カンマで分離します
csvline() = Split(textline, ",")
'配列渡しでセルに代入
Range(Cells(Rowcnt, 1), Cells(Rowcnt, UBound(csvline()) + 1)) = csvline()
Rowcnt = Rowcnt + 1
Loop
CloseFile:
'ファイルを閉じます
Close #ch1
End Sub
Function SelectFileNamePath(FileType, Prompt) As Variant
SelectFileNamePath = Application.GetOpenFilename(FileType, , Prompt)
End Function
Function GetItemNum(FileNamePath) As Integer
Dim ch1 As Long
Dim textline As String
'空いているファイル番号を取得します
ch1 = FreeFile
'FileNamePath のファイルをオープンします
Open FileNamePath For Input As #ch1
Line Input #ch1, textline '1行だけ読み込みます。
Close #ch1
GetItemNum = 1
'1行中のカンマの数を数えます
Do
GetItemNum = GetItemNum + 1
textline = Mid(textline, InStr(textline, ",") + 1)
Loop Until InStr(textline, ",") = 0
End Function
お礼
早速の回答ありがとうございました。 参考にさせていただきました。