我寫了一個簡單的VBA代碼來運行多個SQL查詢。結果應該是excel表格。問題是程序需要時間才能完成!事實上,一個接一個地運行這些查詢會快得多。任何人都可以請告訴我如何使其工作更快?使用VBA運行多個SQL查詢(Oracle) - 爲什麼這麼慢?
這裏是我的代碼:
Const strCon As String = "Driver={Microsoft ODBC for Oracle}; " & _
"CONNECTSTRING=(DESCRIPTION=" & _
"(ADDRESS=(PROTOCOL=TCP)" & _
"(HOST=xxxx)(PORT=xxx))" & _
"(CONNECT_DATA=(SID=RTD))); uid=xxxx; pwd=xxxx;"
Sub RunScripts()
Dim r As Integer
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Dim q1 As String
Dim q2 As String
Dim q3 As String
Set con = New ADODB.Connection
Set rs = New ADODB.Recordset
q1 = Worksheets("Data").Range("i28").Value
Set rs = con.Execute(q1)
Worksheets("ACCV Query").Range("A2").CopyFromRecordset rs
Set rs = Nothing
r = Worksheets("ACCV Query").Range("A65536").End(xlUp).Row
'Next SQL Query
q2 = Worksheets("Data").Range("j28").Value
Set rs = con.Execute(q2)
Worksheets("ACCV Query").Range("A" & r).CopyFromRecordset rs
Set rs = Nothing
r = Worksheets("ACCV Query").Range("A65536").End(xlUp).Row
'Next SQL Query
q3 = Worksheets("Data").Range("k28").Value
Set rs = con.Execute(q3)
Worksheets("ACCV Query").Range("A" & r).CopyFromRecordset rs
con.Close
Set con = Nothing
Set rs = Nothing
End Sub
的SQL查詢儲存在細胞中,並命名爲Q1,Q2,等(所有這些工作)。
當我運行了兩個這樣的查詢它工作正常,但一旦我啓動15 ...宏從未完成工作。每個SQL腳本需要幾秒鐘才能運行,所以它應該快速運行。
我該如何讓它工作得更快? 請幫忙!
非常感謝! M.
有沒有可能是你在Excel中達到行限制?如果您使用的是2003年,則限制爲65k行。 – Jim
單獨檢查每個查詢。代碼中沒有任何內容表示它會掛起 – Pynner
感謝您的評論。 @Pynner查詢工作 - 我手動檢查他們,他們都很好。當我只運行其中兩個時,它運行得很好,當有更多問題時會出現問題 - 比如10個左右。 – Maciej