我的問題可能很簡單,但我無法找到合適的解決方案。Excel VBA ADO循環
我有幾個Excel電子表格中,在第一個我也有獨特的6個位數的ID填補了A列
然後,使用ADO連接,我需要獲得對應於每個唯一ID的信息從第二個電子表格(其中包含大量的數據)
到目前爲止我執行下面的代碼,但我很確定這不是最好的或最快的方式來做到這一點(因爲它非常慢)
當然,我有一個VBA例程,這將做到這一點沒有ADO,但信息量越來越大,很快它會成爲一個問題。
希望ADO可以幫我管理它,謝謝
Sub UpdateCurrentStatus()
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
Dim UID As String
If MsgBox("Is the Labinal extract up-to-date?", vbYesNo) = vbNo Then Exit Sub
Application.ScreenUpdating = False
DBPath = Application.GetOpenFilename(Title:="Select second spreadsheet", FileFilter:="CSV (Comma delimited) (*.csv), *.csv")
sconnect = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DBPath & ";HDR=Yes';FMT=Delimited(;)"
Conn.Open sconnect
y = 2
Do
UID = ThisWorkbook.Worksheets("Sheet1").Cells(y, 1).Value
sSQLSting = "SELECT [CurrentPhase] From [LabinalExtract$] where TicketReference =" & UID ' Your SQL Statement (Table Name= Sheet Name=[Sheet1$])"
mrs.Open sSQLSting, Conn
Sheets(1).Range("B2").CopyFromRecordset mrs
mrs.Close
y = y + 1
Loop While ThisWorkbook.Worksheets("Sheet1").Cells(y, 1) <> ""
Conn.Close
End Sub
您數據文件中有多少行,您要查詢多少個ID?你期望總是得到零或沒有記錄從查詢返回? –
由於CopyFromRecordset位置永不改變,因此每次循環都會覆蓋輸出。 – Parfait
是的,你是rigth,對不起,沒有realice我覆蓋輸出,將正確,感謝您的反饋仍然我會進一步檢查循環話題 –