• ベストアンサー

VB6の列数読み込み

VB6にて、CSVファイルの列数を読み込むにはどのようにしたら良いのでしょうか? Line Inputを用いて変数の数をカウントする、といった方法が思い浮かんだのですが、記述方がわかりません。 ご教授、お願いします。

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

  • ベストアンサー
  • HIROs-NET
  • ベストアンサー率78% (15/19)
回答No.1

列数のカウントは、下記のようにしてはどうでしょうか? Dim No As Integer Dim Buff As String No = FreeFile Open "Test.csv" For Input As #No '1行分データを読み込む Line Input #No, Buff Close #No Dim val() As String '読み込んだ1行分のデータをカンマで分割し配列に代入する val = Split(Buff, ",") '配列には列数分のデータが入っているので、要素番号+1 が列数となる Dim colCnt As Integer colCnt = UBound(val) + 1

skirby112
質問者

お礼

カンマの数での分割の方法がわからなかったので、とても参考になりました ご丁寧に、ありがとうございました!

その他の回答 (2)

noname#140971
noname#140971
回答No.3

Public Function RowCount(ByVal FileName As String) As Integer On Error GoTo Err_RowCount   Dim N    As Integer   Dim fso   As Object   Dim txs   As Object   Dim strText As String      N = 0   Set fso = CreateObject("Scripting.FIleSystemObject")   Set txs = fso.GetFile(FileName).OpenAsTextStream(1, 0)   Do While txs.AtEndOfLine <> True     strText = txs.ReadLine     N = N - XXXXXXXXXX   Loop Exit_RowCount:   RowCount = N   Exit Function Err_RowCount:   Resume Exit_RowCount End Function まあ、バグ臭いとこを修正。

skirby112
質問者

お礼

ご丁寧に、ありがとうございました! XXXX…の部分を検討し、こちらも参考にさせていただきます

noname#140971
noname#140971
回答No.2

[イミディエイト] ? RowCount("C:\Temp\Test.csv") 2 Public Function FileSize(ByVal FileName As String) As Long On Error GoTo Err_FileSize   Dim fso   As Object   Dim fil   As Object   Dim lngSize As Long      Set fso = CreateObject("Scripting.FIleSystemObject")   Set fil = fso.GetFile(FileName)   lngSize = fil.Size Exit_FileSize:   FileSize = lngSize   Exit Function Err_FileSize:   lngSize = -1   Resume Exit_FileSize End Function Public Function RowCount(ByVal FileName As String) As Integer   Dim N    As Integer   Dim fso   As Object   Dim txs   As Object   Dim strText As String      N = 0   If FileSize(FileName) > 0 Then     Set fso = CreateObject("Scripting.FIleSystemObject")     Set txs = fso.GetFile(FileName).OpenAsTextStream(1, 0)     Do While txs.AtEndOfLine <> True       strText = txs.ReadLine       N = N - XXXXXXXXXX     Loop   End If   RowCount = N End Function XXXXXX をどうするのか? つまり、空行をカウントするのか否かで多少書き方が違ってきます。 また、ファイルサイズをチェックしないでエラートラップを利用しても同じ結果を得られます。 Public Function RowCountII(ByVal FileName As String) As Integer On Error GoTo Err_RowCount   Dim N    As Integer   Dim fso   As Object   Dim txs   As Object   Dim strText As String      N = 0   Set fso = CreateObject("Scripting.FIleSystemObject")   Set txs = fso.GetFile(FileName).OpenAsTextStream(1, 0)   Do While txs.AtEndOfLine <> True     strText = txs.ReadLine     N = N - XXXXXXXXXX   Loop Exit_RowCount:   RowCountII = N   Exit Function Err_RowCount:   Resume Exit_RowCount End Function XXXXXXXXXX の部分はは、頑張って完成させて下さい。

関連するQ&A

専門家に質問してみよう