相关知识点
访问数据库
ADO对象(ActiveX Data Object)包含Connection、RecordSet等多个对象
copyFromRecordset 结果集里所有行信息,一行行显示在某位置
MoveNext 让指针移动到下一条记录
EOF 判断指针是否已经到达末尾
API 可以调用:调用时要先声明
WinExec(命令或可执行文件名,显示方式)
声明:Declare Function WinExec Lib “kernel32”_
(ByVal lpcmdline as string,ByVal nCmdShow as Long) As Long
声明要使用WinExec的API函数,并指出该函数存放在系统文件kernel32.dll中。同时说明该函数有一个String和一个Long函数
例1 学生成绩Access数据导入到Execl单元格,集中写入
Sub importData()
Dim con as Object, rst as Object, sql as String,i as Integer
‘创建一个连接对象,命名为con
Set con=CreatObject(“Adobe.Connection”)\
‘使用con将本VBA程序与目标数据库连接起来
con.Open”Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\vbademo\demodb.accdb”
‘将准备执行的SQL命令保存在一个字符串变量sql中
sql=”select 课程号,课程名称,责任老师 from course”
‘创建一个结果集对象
Set rst=CreratObject(“Adobe.Recordset”)
‘使用该结果集对象,沿con路线将sql语句发送给目标数据库,并接收数据库返回的查
询‘结果
rst.Open sql,con
‘将结果集中全部内容直接复制到B2单元格中
Range(“b2”).copyFromRecordset.rst
‘非常重要:程序结束前必须关闭结果集和连接对象!
rst.Close
con.Close
End Sub
例2 学生成绩Access数据导入到Execl单元格,按照格式写出
Sub importData()
Dim con as Object, rst as Object, sql as String,i as Integer
‘创建一个连接对象,命名为con
Set con=CreatObject(“Adobe.Connection”)\
‘使用con将本VBA程序与目标数据库连接起来
con.Open”Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\vbademo\demodb.accdb”
‘将准备执行的SQL命令保存在一个字符串变量sql中
sql=”select 课程号,课程名称,责任老师 from course”
‘创建一个结果集对象
Set rst=CreratObject(“Adobe.Recordset”)
‘使用该结果集对象,沿con路线将sql语句发送给目标数据库,并接收数据库返回的查
询‘结果
rst.Open sql,con
‘扫描结果集中每一行数据,将其字段内容稍加修改后填入第1行单元格中
‘跟12回文本文件处理有些相似
i=8
Do while Not rst.EOF
cells(i,2)=rst(“课程号”)
cells(i,3)=”(”&rst(“课程名称”)&”)”
cells(i,4)=”Mr.”&rst(“责任教师”)
rst.MoveNext
i=i+1
Loop
rst.Close
con.Close
End Sub
例3 API调用,WinExec
Option Explicit
Declare Function WinExec Lib “kernel32”_
(ByVal lpcmdline as string,ByVal nCmdShow as Long) As Long
Sub Rundemo()
WinExec”c:\windows\system32\notepad.exe”,9
End Sub


被折叠的 条评论
为什么被折叠?



