VBA介绍:
Visual Basic for Applications(VBA)是 VisualBasic 的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展 Windows 的应用程序功能,特别是Microsoft Office软件。
编写第一个VBA宏
「宏」:简单的说,宏是一段可以运行的 VBA 代码片段。
首先打开excel的开发者模式:
数据类型:
变量格式:
Dim 变量名 As 数据类型
Dim strConn As String
数组:
Dim user() As Variant
函数:
弹窗函数:MsgBox()
小脚本:
Sub QueryOracle()
Dim strConn As String '链接字符串'
Dim dbConn As Object '链接对象'
Dim resSet As Object '查询结果集'
'创建数据连接对象'
Set dbConn = CreateObject("ADODB.Connection")
Set resSet = CreateObject("ADODB.Recordset")
'拼接链接字符串
strConn = "Driver={Oracle in instantclient_19_18};Dbq=ORCL216;User Id=用户名;Password=密码;OLEDB.NET=True;CodePage=65001;"
'数组
Dim user() As Variant
'-----打开数据库------'
dbConn.Open strConn
'sql语句
Set resSet = dbConn.Execute("select * from user")
'将查询数据存入数组中
user = resSet.GetRows(resSet.RecordCount)
'循环行高
For i = LBound(user, 2) To UBound(user, 2)
'循环列数
For j = LBound(user, 2) To UBound(user)
'将数组中的值写入sheet页中
Sheet1.Cells(2 + i, 1 + j) = user(j, i)
Next
Next
'-----关闭连接----
dbConn.Close
End Sub
单元格:
VBA连接Oracle:
方法:免安装客户端+ odbc
1、下载基本包
本地需要准备两个包 instantclient-basic 和 instantclient-odbc
官网:https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html
下载后将两个包解压到同一个目录下,我是解压到D:\D\w\instantclient_19_18,记住这个位置
配置oracle 网络文件
需要配置一个网络文件 tnsnames.ora ,这个文件的作用是让本地客户端知道需要访问的数据库地址和相关信息
在刚才解压的那两个包的目录下新建 “network\admin” 这个目录,将tnsnames.ora 这个文件放在这下面
tnsnames.ora 文件内容
# tnsnames.ora Network Configuration File: D:\app\zico\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
ORCL_win10 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.133.129)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
第三步、安装odbc 驱动、配置DSN数据源
1 安装odbc 驱动
打开我们电脑的数据源【我是win10 64位的】,可以看到目前的驱动程序没得和oracle 相关的
电脑搜索:odbc
点击压缩文件后
就有驱动了
2 配置DSN数据源
为啥要配置这玩意?其实是因为我们没有安装相应的客户端,excel 只有先从windows 的环境中查找是否有相应的驱动
同样的在 ODBC数据源管理程序(64位)这里,点击 用户 DSN ⇒ 添加
Data Source Name 这里随便填写
TNS Service Name: 必须填写你 oracle -》 network\admin 目录下的 tnsnames.ora 文件中为远程数据库设置别名
D:D\w\instantclient_19_18\network\admin\tnsnames.ora
点击 test connection 进行数据库链接测试,输入用户名密码,点击ok 进行测试,在填写正确的情况下就会 弹出 connection successful.
如果弹出其他的请自行百度,一般是上面哪些信息填写错误了
User name :远程数据库用户登录的密码
Password :登录密码
第四步 VBA链接数据库测试
4.1 设置相应的 Windows 环境变量
1、path 环境变量后边加上客户端文件地址:D:\D\w\instantclient_19_18
2、TNS_ADMIN 新建这个变量,值根据自己的情况按照图示填写
3、新建 NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK 这个变量是为了防止 oracle 中文变成乱码
代码连接:链接字符串说明
cnn.Open "Driver={Oracle in instantclient__12_1};Dbq=tnsnames.ora中数据库别名或者tnsnames.ora中整个串;User Id=数据库用户名;Password=密码;"
{Oracle in instantclient__12_1} : 就是你配置DSN的时候添加的数据源驱动的名字;
Dbq:tnsnames.ora中数据库别名或者tnsnames.ora中整个串;
User Id:数据库用户名;
Password:密码
Sub ORACLE测试()
Dim strConn As String '链接字符串'
Dim dbConn As Object '链接对象'
Dim resSet As Object '查询结果集'
'设置自己的链接信息'
Dim db_sid, db_user, db_pass As String 'sid,用户名,密码'
db_sid = "win10_Orcl_DNS"
db_user = "system"
db_pass = "123456"
'创建对象'
Set dbConn = CreateObject("ADODB.Connection")
Set resSet = CreateObject("ADODB.Recordset")
'拼接链接字符串
' '
strConn = "Driver={Oracle in instantclient_12_1};Dbq=ORCL_win10;User Id=system;Password=123456;"
'-----打开数据库------'
dbConn.Open strConn
'执行查询'
Set resSet = dbConn.Execute("select count(1) from prd_part t")
'粘贴结果
Range("A2").CopyFromRecordset resSet
'-----关闭连接----
dbConn.Close '关闭数据库
End Sub
————————————————
版权声明:本文为CSDN博主「dadaowuque」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dadaowuque/article/details/121366531