'Read Excel File Using ADO
Public Function Read_Excel _
(ByVal sFile _
As String) As ADODB.Recordset
'函数参数
On Error GoTo fix_err '有错去fix_err那个标签
Dim rs As ADODB.Recordset '搞了个对象:)
Set rs = New ADODB.Recordset '设置了个对象rs
Dim sconn As String '搞了个字串
rs.CursorLocation = adUseClient '对象游标位
rs.CursorType = adOpenKeyset '游标类型
rs.LockType = adLockBatchOptimistic '对象之锁定(我想要独占!除非你换location)
sconn = "DRIVER=Microsoft Excel Driver (*.xls);" & "DBQ=" & sFile '字串设置,sFile是传参数的,用excel驱动去读这个文件
rs.Open "SELECT * FROM [sheet1$]",sconn '选取全部
Set Read_Excel = rs '新对象完全等于rs旧对象
Set rs = Nothing '干掉旧对象(临时)
Exit Function
fix_err:
Debug.Print Err.Description + " " + _
Err.Source,vbCritical,"Import"
Err.Clear
End Function
于是你就有了一个对象Read_Excel ,可以使用本对象去查任何你要的东东;
找对象要找好对象:)
附录,对付对象的方法供参考:
rs.movenext 将记录指针从当前的位置向下移一行
rs.moveprevIoUs 将记录指针从当前的位置向上移一行
rs.movefirst 将记录指针移到数据表第一行
rs.movelast 将记录指针移到数据表最后一行
rs.absoluteposition=N 将记录指针移到数据表第N行
rs.absolutepage=N 将记录指针移到第N页的第一行
rs.pagesize=N 设置每页为N条记录
rs.pagecount 根据 pagesize 的设置返回总页数
rs.recordcount 返回记录总数
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete 删除当前记录,但记录指针不会向下移动
rs.addnew 添加记录到数据表末端
rs.update 更新数据表记录
---------------------------------------
Recordset对象方法
Open方法
recordset.Open Source,ActiveConnection,CursorType,LockType,Options
Source
Recordset对象可以通过Source属性来连接Command对象。Source参数可以是一个Command对象名称、一段sql命令、一个指定的数据表名称或是一个Stored Procedure。假如省略这个参数,系统则采用Recordset对象的Source属性。
ActiveConnection
Recordset对象可以通过ActiveConnection属性来连接Connection对象。这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信(ConnectionString)的字符串参数。
CursorType
Recordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下:
----------------------------------------------------------------------------------------------------------------------
常数 常数值 说明
----------------------------------------------------------------------------------------------------------------------
adOpenForwardOnly 0 缺省值,启动一个只能向前移动的游标(Forward Only)。
adOpenKeyset 1 启动一个Keyset类型的游标。
adOpenDynamic 2 启动一个Dynamic类型的游标。
adOpenStatic 3 启动一个Static类型的游标。
----------------------------------------------------------------------------------------------------------------------
以上几个游标类型将直接影响到Recordset对象所有的属性和方法,以下说明他们之间的区别。
----------------------------------------------------------------------------------------------------------------------
LockType
Recordset对象Open方法的LockType参数表示要采用的Lock类型,如果忽略这个参数,那么系统会以Recordset对象的LockType属性为预设值。LockType参数包adLockReadOnly、adLockPRSSimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下:
----------------------------------------------------------------------------------------------------------------------
常数 常数值 说明
----------------------------------------------------------------------------------------------------------------------
adLockReadOnly 1 缺省值,Recordset以只读启动无法运 行AddNew、UpdatDelete
adLockPRSSimistic 2 当数据源正在更新时,系统会暂时锁住其他用户动作保持数据一致
adLockOptimistic 3 当数据源正在更新时,系统并不会锁住其他用户的动作。
adLockBatchOptimistic 4 当数据源正在更新时,其他用户必须将 CursorLocation属性改为 adUdeClientBatch才能对数据进行增、删、改的操作。
Options
常 量 说 明 adCmdText 指示提供者应将sCommandText赋值为命令的文本定义 adCmdTable 指示ADO应生成SQL查询,以便从sCommandText命名的表中返回所有行 adCmdTableDirect 指示提供者应从sCommandText命名的表中返回所有行 adCmdTable 指示提供者应将sCommandText赋值为表名 adCmdStoredProc 指示提供者应将sCommandText赋值为存储过程 adCmdUnknown 指示sCommandText参数中的命令类型未知 adExecuteAsync 指示命令应该异步执行