我在具有32位excel的64位Windows计算机上以记录集代码运行,而数据检索仅检索到256个字符。
此代码是从excel工作表“测试计划”中读取数据,并且其中包含一些包含大于256个字符的数据的列。目前,这些列只检索256个字符。
我需要检索其中包含任意数量字符的整个数据。
我已经尝试过以下解决此问题的方法:
我尝试通过将系统注册表“ TypeGuessRows”更新为0,但是在我的计算机上不起作用。
我已将列格式更改为“常规”。
Sconnect = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DBPath & ";HDR=Yes';IMEX=1"
conn.Open Sconnect
Query = "Select * from [Test Plan$] where [Optimized Scenario No] = '" + OptimizedScenarioNo + "' and [Type] = 'Today' order by [Seq]"
rsOptimizedScenarioCreation.Open Query, conn
实际结果:
此代码是从excel工作表“测试计划”中读取数据,并且其中包含一些包含大于256个字符的数据的列。目前,这些列只检索256个字符。
预期结果
我需要检索其中包含任意数量字符的整个数据。
答案 0 :(得分:0)
要明确:
这只是一种解决方法,因为您将Excel用作Excel的数据源...
您可以根据SQL语句对数据源工作表进行过滤和排序,并将剩余的可见范围用于其他目的,例如G。将其复制到另一张纸上:
Private Sub CopyWithoutSQL()
Dim ws As Worksheet
Dim n As Long
Dim OptimizedScenarioNo As String
Set ws = ActiveWorkbook.Sheets("Test Plan")
OptimizedScenarioNo = "whatever"
' switch all filters off
If Not ws.AutoFilterMode Then ws.Rows(1).AutoFilter
If ws.AutoFilter.FilterMode Then ws.ShowAllData
' filter according to SQL statement
n = ws.Range("1:1").Find(What:="Optimized Scenario No", After:=Range("A1")).Column
ws.UsedRange.AutoFilter Field:=n, Criteria1:="=" & OptimizedScenarioNo
n = ws.Range("1:1").Find(What:="Type", After:=Range("A1")).Column
ws.UsedRange.AutoFilter Field:=n, Criteria1:="Today"
' sort according to SQL statement
n = ws.Range("1:1").Find(What:="Seq", After:=Range("A1")).Column
With ws.Sort
.SortFields.Clear
.Header = xlYes
.SortFields.Add key:=Columns(n), SortOn:=xlSortOnValues, Order:=xlAscending
.SetRange ws.UsedRange
.Orientation = xlTopToBottom
.Apply
.SortFields.Clear
End With
' use the remaining visible range, e. g. copy it to somewhere
ws.UsedRange.Copy ActiveWorkbook.Sheets(2).Range("A1")
End Sub