こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

\記号が入った数値の処理について(VBA)

はじめまして。
excel2013でcsvの読み込みをVBAで自動化させようとしています。

基となるCSVファイルに\記号が含まれておりファイルを読み込むと文字列として読まれてしまいまい、エラーインジケータが表示されます。
文字と読み込まれているので計算もできないでいます。

数値に置き換える方法として考えられる事はないでしょうか?

ご教授お願いいたします。

-------------------------------
ソース
Sub Read()

Dim FileType, Prompt As String
Dim FileNamePath As Variant
Dim csvline() As String
Dim i, 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

'1行あたりの項目数を取得します
ColumNum = GetItemNum(FileNamePath)

'csvlineを1行あたりの項目数で再割り当てます
ReDim csvline(1 To ColumNum)

'空いているファイル番号を取得します
ch1 = FreeFile
'FileNamePath のファイルをオープンします
Open FileNamePath For Input As #ch1

'エラーが発生したらファイルを閉じます
'CSVのファイルは1行の項目数が正確に合っていないと読めないのですが、
'色々なCSVがあるようなので入れておきます
On Error GoTo CloseFile

'表の行番号の初期化 1行目から読み込んだデータを入力します
Rowcnt = 1
Do While Not EOF(ch1) 'ファイルの終端かどうかを確認します。

For i = 1 To ColumNum
Input #ch1, csvline(i) '1行の項目数だけ読み込みます
Next
'配列渡しでセルに代入 この方が早い
Range(Cells(Rowcnt, 1), Cells(Rowcnt, ColumNum)) = csvline()

Rowcnt = Rowcnt + 1
Loop

CloseFile:
'ファイルを閉じます
Close #ch1

End Sub

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

Function SelectFileNamePath(FileType, Prompt) As Variant
SelectFileNamePath = Application.GetOpenFilename(FileType, , Prompt)
End Function

-----------------------
CSVファイル
\101,\101,\101

投稿日時 - 2014-04-28 11:26:03

QNo.8572021

すぐに回答ほしいです

質問者が選んだベストアンサー

replace関数(や必要に応じてval関数)をお使いください

textline = replace(textline,"\","")
もしくは、
textline =val(replace(textline,"\",""))
みたいな感じで。

投稿日時 - 2014-04-28 12:01:51

お礼

ありがとうございます。
置き換え処理をしてやればよいのですね。

たすかりました。

投稿日時 - 2014-04-28 15:49:23

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問