Private Sub Command1_Click()Call PutInExcel1("10")End SubSub PutInExcel1(i)'==================================Dim conn As New ADODB.ConnectionDim rs As ADODB.RecordsetFileName = "D:\database\db.mdb"CnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FileName & ";Persist Security Info=False"conn.Open CnStr'==================================Dim ExlApp As New Excel.ApplicationExlFile = "D:\Database\test.xls"ExlApp.Workbooks.Open (ExlFile)ExlApp.Worksheets("blad1").Select'==================================Sql = "select a.* from list a where a.[chart no]='" & i & "' and a.[site-measurement]='1 - Depth'"Print Sqlrs.Open Sql, conn, 1, 1If rs(3) <> "missing" Then ExlApp.Cells(17, 3) = rs(3)If rs(4) <> "missing" Then ExlApp.Cells(17, 6) = rs(4)If rs(5) <> "missing" Then ExlApp.Cells(17, 9) = rs(5)ExlApp.SaveWorkspaceExlApp.Quitrs.Closeconn.CloseEnd Sub到底我做錯什么了????
3 回答

忽然笑
TA貢獻1806條經驗 獲得超5個贊
你的rs只是定義了一個記錄集,但并沒有把任何記錄集賦于它,所以才會出現這樣的錯誤。
你的程序最好增加二個自定義函數,把conn,Rs的加載與缷載單獨出來。否則,你會發現程序運行越來越慢,內存占用越用越多。
比如說:
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim ExlApp As Excel.Application
public sub CrOBJ()
set conn = new ADodb.connection
set rs = new adodb.recordset
set ExlApp = new Excel.Application
end sub
public sub killOBJ()
set conn = nothing
set rs = nothing
set ExlApp = nothing
end sub
第一個函數可以在Form_load()中加載而后一個函數可以在Form_unload()中加載。這樣做的好處就是打開頁面就調用,關閉頁面就缷載??梢詼p小內存占用!

瀟湘沐
TA貢獻1816條經驗 獲得超6個贊
你的代碼沒有錯誤,如果總是出現“對象變量或with塊變量未設置”錯誤,只有一個可能,就是你的 MSHFlexGrid 控件的問題。當用的是 MSFlexGrid 控件時,會出現你說的問題。
- 3 回答
- 0 關注
- 292 瀏覽
添加回答
舉報
0/150
提交
取消