- ベストアンサー
VB6の列数読み込み
VB6にて、CSVファイルの列数を読み込むにはどのようにしたら良いのでしょうか? Line Inputを用いて変数の数をカウントする、といった方法が思い浮かんだのですが、記述方がわかりません。 ご教授、お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
列数のカウントは、下記のようにしてはどうでしょうか? 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
その他の回答 (2)
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 まあ、バグ臭いとこを修正。
お礼
ご丁寧に、ありがとうございました! XXXX…の部分を検討し、こちらも参考にさせていただきます
[イミディエイト] ? 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 の部分はは、頑張って完成させて下さい。
お礼
カンマの数での分割の方法がわからなかったので、とても参考になりました ご丁寧に、ありがとうございました!