ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 11797|回复: 20

[分享]一个连接oracle数据库的VBA

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-4-2 09:47 | 显示全部楼层 |阅读模式
<p>使用前安装客户端程序,设置简单,可以联系SQL语句</p><p>Public Sub myors()<br/>&nbsp;&nbsp;&nbsp; Dim cnn As New ADODB.Connection<br/>&nbsp;&nbsp;&nbsp; Dim rs As New ADODB.Recordset<br/>&nbsp;&nbsp;&nbsp; Dim cnnStr As String, myTable As String, SQL As String, i As Integer<br/>&nbsp;&nbsp;&nbsp; 'myTable = "BOOK_STOCK"&nbsp;&nbsp;&nbsp; '指定数据表<br/>&nbsp;&nbsp;&nbsp; '设置建立与Oracle数据库服务器中连接的字符串<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; Range("A3:G2000").Select '以下两行是清除数据Contents<br/>&nbsp;&nbsp;&nbsp; Range("A3:G2000").ClearContents<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; Lbname1 = Trim(Cells(2, 1))<br/>&nbsp;&nbsp;&nbsp; Lbname2 = Trim(Cells(2, 2))<br/>&nbsp;&nbsp;&nbsp; Lbname3 = Trim(Cells(2, 3))<br/>&nbsp;&nbsp;&nbsp; SQLname = Trim(Cells(2, 4))<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; cnnStr = "Provider=MSDAORA;" _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp; "Data Source=" &amp; Lbname1 &amp; ";" _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp; "User ID=" &amp; Lbname2 &amp; ";" _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp; "Password=" &amp; Lbname3 &amp; ";"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'oadb是oracle服务器名;<br/>&nbsp;&nbsp;&nbsp; cnn.ConnectionString = cnnStr<br/>&nbsp;&nbsp;&nbsp; cnn.Open<br/>&nbsp;&nbsp;&nbsp; '创建查询记录集<br/>&nbsp;&nbsp;&nbsp; SQL = SQLname<br/>&nbsp;&nbsp;&nbsp; 'SQL = "select * from " &amp; myTable<br/>&nbsp;&nbsp;&nbsp; 'SQL = "select * from " &amp; myTable &amp; " where BOOK_PUBLISHER='中国电力出版社'"<br/>&nbsp;&nbsp;&nbsp; MsgBox SQL<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; rs.CursorLocation = adUseClient '游标改为客户端游标<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; rs.Open Source:=SQL, ActiveConnection:=cnn<br/>&nbsp; <br/>&nbsp;&nbsp;&nbsp; With rs<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For i = 1 To .Fields.Count&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '复制字段名<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cells(3, i) = .Fields(i - 1).Name<br/>&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next i<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox "纪录数:" &amp; rs.RecordCount<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Range("A4").CopyFromRecordset rs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '复制记录数据<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Close&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '关闭记录集<br/>&nbsp;&nbsp;&nbsp; End With<br/>&nbsp;&nbsp;&nbsp; cnn.Close<br/>&nbsp;&nbsp;&nbsp; Set rs = Nothing<br/>&nbsp;&nbsp;&nbsp; Set cnn = Nothing<br/>&nbsp;&nbsp;&nbsp; Range("A3").Select<br/>End Sub</p><p>&nbsp;注:参考了《EXCEL VBA整合数据库应用》一书,但发现:</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For i = 1 To .Fields.Count&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '复制字段名<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cells(3, i) = .Fields(i - 1).Name<br/>&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next i<br/>这段代码有错误,原来:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cells(3, i) = .Fields(i - 1)</p><p>更改为:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cells(3, i) = .Fields(i - 1).Name<br/><br/></p> aYKj1Bvz.rar (23 KB, 下载次数: 509) <br/>感觉调用oracle数据库数据速度很快,可以作为人力资源统计数据来用。
[此贴子已经被作者于2008-4-2 9:55:26编辑过]

TA的精华主题

TA的得分主题

发表于 2008-6-6 21:37 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-5-20 21:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢,你这我会用到的

TA的精华主题

TA的得分主题

发表于 2009-12-22 15:45 | 显示全部楼层
找了很久,还是EH藏龙卧虎

TA的精华主题

TA的得分主题

发表于 2010-3-19 11:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
非常感谢!正在学习中,有问题还要请教!

TA的精华主题

TA的得分主题

发表于 2010-7-26 09:07 | 显示全部楼层

回复 1楼 weiguoyin868 的帖子

谢谢楼主分享!!

TA的精华主题

TA的得分主题

发表于 2010-8-2 09:29 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-8-2 10:13 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-8-3 21:34 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-11-7 13:55 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-6 14:28 , Processed in 0.026897 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表