|
4#
楼主 |
发表于 2009-11-23 21:32:25
|
只看该作者
总的思路,是利用ADO和QueryTable完成Oracle数据库的连接和读取
你上面那段代码出错原因的分析:
1、
看看vba的“工具”菜单中“引用”里面有没有引用
Microsoft ActiveX Data Objects 2.0 Library
如果没有,勾上它
2、把
cnn1.ConnectionString = "data source = vgsm;user id=vgsm;password=vgsm;"
这一句改为
cnn1.Open "Provider=MSDAORA.1;password=vgsm;password=vgsm;data source = vgsm;Persist Security Info=True"
其中,data source的名字是你的Oracle客户端定义的TNS名称
3、Dim rstemployees As New ADODB.Recordset
rstemployees.Open Source:=sqlcode,ActiveConnection:=cnn1,CursorType:=adOpenDynamic,LockType:=adLockReadOnly,Options:=adCmdText
with Sheet1.QueryTable.Add(Connection:=rstemployees,Destination:=Rang("A1:D1"))
.FieldNames=False '是否现实字段名称
.RowNumbers=False '是否用一列显示行号
.RefreshStyle=xlOverwriteCells
end with
上述代码中,Sheet1代表要灌入数据的工作表,sqlcode代表要执行的sql查询语句,
Rang("A1:D1"))代表灌入的数据第一行的位置
至于QueryTable的属性设置可以参考vba的帮助,很详细,在此不再一一说明,QueryTable是个好东西 |
|