如何在不知道logging数的情况下设置parsing查询结果范围?

我通过excel-vba&ADO在excel中运行SQL查询。 我使用循环parsing结果然后,我发现我必须知道有多lessloggingsql将生成之前parsing结果。

实际上,在生成查询之前,我不知道查询结果logging的数量。

任何函数或方法都可以让我知道,所以我可以把循环语句?

(我已经洞察.Fields().Properties(),但不工作)

Sub sbADO() Dim sSQLQry As String Dim ReturnArray Dim Conn As New ADODB.Connection Dim mrs As New ADODB.Recordset Dim DBPath As String, sconnect As String DBPath = ThisWorkbook.FullName 'You can provide the full path of your external file as shown below 'DBPath ="C:\InputData.xlsx" sconnect = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DBPath & ";HDR=Yes';" Conn.Open sconnect sSQLSting = select ....' it is too long so i choose to skip Set rs = Conn.Execute(sSQLSting) Do While Not rs.EOF 'Officer = rs.Fields(i).Value For j = 5 To 29 ' THIS IS THE MAIN CODE I NEED TO IMPROVE 'worksheet1.Cells(7, 11) = rs.Properties.Count worksheet1.Cells(j, 1) = rs.Fields(0).Value worksheet1.Cells(j, 3) = rs.Fields(2).Value worksheet1.Cells(j, 4) = rs.Fields(3).Value worksheet1.Cells(j, 7) = rs.Fields(6).Value ' Insert data to your worksheet here rs.MoveNext Next j Loop rs.Close End Sub 

  For j = 5 To 29 ' next j 

这是我应该设置的影响工作表parsing范围的范围。在这种情况下,总共有24个查询logging结果。如果我设置j太大(例如To 30),它会提示3021错误-BOF&EOF应该是真的。因此,范围应该适合logging的数量。

j不需要循环。 只需在所有单元格分配之后和do循环结束之前递增j。

 Sub sbADO() Dim sSQLQry As String Dim ReturnArray Dim Conn As New ADODB.Connection Dim mrs As New ADODB.Recordset Dim DBPath As String, sconnect As String DBPath = ThisWorkbook.FullName 'You can provide the full path of your external file as shown below 'DBPath ="C:\InputData.xlsx" sconnect = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DBPath & ";HDR=Yes';" Conn.Open sconnect sSQLSting = select .... ' it is too long so i choose to skip Set rs = Conn.Execute(sSQLSting) j = 5 Do While Not rs.EOF 'worksheet1.Cells(7, 11) = rs.Properties.Count worksheet1.Cells(j, 1) = rs.Fields(0).Value worksheet1.Cells(j, 3) = rs.Fields(2).Value worksheet1.Cells(j, 4) = rs.Fields(3).Value worksheet1.Cells(j, 7) = rs.Fields(6).Value j = j + 1 rs.MoveNext Loop rs.Close End Sub