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()中加载。这样做的好处就是打开页面就调用,关闭页面就缷载。可以减小内存占用!
潇湘沐
TA贡献1816条经验 获得超6个赞
你的代码没有错误,如果总是出现“对象变量或with块变量未设置”错误,只有一个可能,就是你的 MSHFlexGrid 控件的问题。当用的是 MSFlexGrid 控件时,会出现你说的问题。
- 3 回答
- 0 关注
- 226 浏览
添加回答
举报
0/150
提交
取消