ADOでCSVファイルを読み込むと255文字以上でエラーになる

 ちょっと前にVBScriptで作られたツールがあるのですが、最近になってエラーが出るとの連絡。
エラーになるケースは、CSVファイルを読み込んで255Byteを超えている値を扱う時と判明。
対象のツールは実装上ADOが使われており、下記のようにCSVへアクセスしてます。

Set objADO = CreateObject("ADODB.Connection")
objADO.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=CSVファイルのフォルダ;ReadOnly=1}"
Set objRS = objADO.Execute("select * from CSVファイル名")

Do Until objRS.Eof = True
   '1番目の項目
   colum1 = objRS(0)
'具体的な処理は省略
   objRS.MoveNext
Loop

対象のCSVファイルが改行を含む値を扱う都合でADOを使ったようなのですが、どうやら、CSVテキストドライバとしての仕様上、255を超える項目数だったり、255を超えるサイズといった、昔ながらの壁がある模様。
回避策としては、Schema.iniで逃げるのが定番らしいのですが、試したところエラーにはならないが、255文字超が勝手に切られる形に・・・

というか、これ以上ADODBについて調べる時間が無駄!!なので、テキストファイル読み込みとして作り直しました。。

こちらを少し参考にして、さらにダブルクォーテーション内のカンマも考慮し(ここではカンマは削除してます)、ADOのレコードセットっぽく1レコード毎に配列へ列の値をセットしてから処理を行っていきます。

Const sCsvFileName = "C:\Users\XXX\data.csv"
Dim objFSO
Dim objFile
Dim strLine,SpltTmp
Dim i,iDimPos,colum1

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.OpenTextFile(sCsvFileName)

Do While objFile.AtEndOfStream <> True
     'CSV列の最大数
     Redim strRec(12)
     strLine = ""
     Do While objFile.AtEndOfStream <> True
        strLine = strLine + objFile.ReadLine
        If (Len(strLine) - Len(Replace(strLine,"""",""))) Mod 2 = 0 Then Exit Do
        strLine = strLine + vbNewLine
     Loop
     iDimPos = 0
     For Each SpltTmp In Split(strLine,",")
        If iDimPos > 11 Then
           Exit For
        End If
        If Instr(SpltTmp,"""") = 0 Then
           strRec(iDimPos) = SpltTmp
           iDimPos = iDimPos + 1
        ElseIf Instr(SpltTmp,"""") = 1 And InStrRev(SpltTmp,"""") = Len(SpltTmp) Then
           If Instr(1, SpltTmp, """") = 2 Then
              strRec(iDimPos) = ""
           Else
              strRec(iDimPos) = Mid(SpltTmp,2,Len(SpltTmp)-2)
           End If
           iDimPos = iDimPos + 1
        Else 
           strRec(iDimPos) = strRec(iDimPos) + SpltTmp
           If InStrRev(SpltTmp,"""") = Len(SpltTmp) Then
              strRec(iDimPos) = Mid(strRec(iDimPos),2, Len(strRec(iDimPos))-2)
              iDimPos = iDimPos + 1
           End If
        End If
     Next

   '1番目の項目
   colum1 = strRec(0)
'具体的な処理は省略
Loop

objFile.Close