ADODB 接続を使用して SQL ステートメントを記述し、Excel vba でデータを抽出しています。
私の問題は、255 文字を超える文字列を含むセルがあることです。
255 文字を超えるデータを選択するために ADODB 接続を引き続き使用する方法があるかどうか疑問に思っています
これは私が使用した機能です。
Public Function QueryRead(sqlArg As String) As Dictionary
Dim pConnection As ADODB.Connection
Set pConnection = New ADODB.Connection
With pConnection
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & ActiveWorkbook.FullName & _
";Extended Properties=Excel 8.0;"
'.Provider = "MSDASQL"
'.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=" & App.Path & "\ExcelSrc.xls; "
.CursorLocation = adUseClient
.Open
End With
Dim pMap As New ADODB.Recordset
Dim sql As String
sql = sqlArg
Dim resultSet As New Dictionary
pMap.Open sql, pConnection
If pMap.RecordCount > 0 Then
Dim record As Variant
Dim counter As Integer
counter = 0
Do Until pMap.EOF
Dim resultRecord As Dictionary
Set resultRecord = New Dictionary
For Each record In pMap.fields
resultRecord.Add record.Name, record.value
Next
Dim index As String
index = CStr(counter)
resultSet.Add index, resultRecord
counter = counter + 1
pMap.MoveNext
Loop
End If
pMap.Close
pConnection.Close
Set QueryRead = resultSet
End Function
これが私がそれを呼ぶ方法です
Set resultSet = model.QueryRead("SELECT * FROM [Database$] WHERE [Level] = 2 AND [Item_No] = '" & itemNo & "'")
私のワークシートは Database と呼ばれ、Level や Item_No などの列があります。
Formula 列の下のセルの 1 つに、255 文字を超える文字列があります。
お知らせ下さい。
アップデート
それを強調したい
a) 抽出された個々のフィールド データが 255 文字の制限を超えています。つまり、「SELECT * FROM」の*
b) 255 文字を超える入力パラメータではない
c) 255 文字を超えるクエリ文字列ではない