VBA基础(宏编程)

news/2024/11/7 7:44:00/

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)NextNext'-----关闭连接----dbConn.CloseEnd 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


http://www.ppmy.cn/news/404120.html

相关文章

360全景拍摄为什么要使用鱼眼镜头,与超广角镜头区别?

360全景摄影,通常使用8mm至15mm鱼眼镜头。360全景摄影之后以一定要选择鱼眼镜头进行360全景摄影,其主要原因为了单张照片拍摄到较大的视角范围,从而以较少的照片拼接成一个360全景图。 使用8mm鱼眼镜头,360全景摄影少则拍摄…

vue3+ts+vite+element plus中使用luckysheet(预览效果)

前言: 这两天一个项目,需要在页面中以excel的形式展示大量数据,喜欢偷懒的我果断扒拉了一堆适用于vue3的插件,下面简单说说我使用的luckysheet 使用: 一、准备一个vue3tsviteelement plus的项目 此处省略n个字。。。…

618父亲节,感恩的祝福送给父亲!

父亲节(Fathers Day),是感恩父亲的节日。Fathers day, is a day of thanksgiving for fathers. 第一个提出父亲节理念的人是1906年的多德夫人。她想用一个特殊的日子来纪念她的父亲,她的妈妈多年前就去世了。起初,多德…

【闭包函数与装饰器大全】——python基础

目录索引 闭包:闭包三要素:闭包的作用:闭包演示:闭包的意义: 装饰器:特点:实例演示:实例演示2之参数: 装饰器常用的场景:编写一个计时的装饰器:*普…

实测Maven依赖包可通过域名抢注实现钓鱼攻击吗

先说结论:基本不可行 原理 Maven包中 groupId 字段是域名反写,比如你有一个 12345.com,就可以申请到 com.12345 的groupId。 很多开源项目都停止维护,但是很多人使用,这些团队可能忘记续费域名;同时目前…

永久存储:文件处理与路径处理

📢博客主页:盾山狂热粉的博客_CSDN博客-C、C语言,机器视觉领域博主📢努力努力再努力嗷~~~✨ 💡大纲 ⭕如何将数据永久的存放到硬盘上 👉不要打开文件,然后直接关闭文件,会导致截断 一、如何操作…

JavaScript中基本数据类型怎样使用?

JavaScript中的数据类型分为两大类,分别是基本数据类型和复杂数据类型(或称为引用数据类型),如图所示。 本节重点讲解基本数据类型。下面我们用代码演示基本数据类型的使用。 (1)数字型(Number),包含整型值和浮点型值: var numl 21; …

小米笔记本AIR3触控板使用技巧

单指滑动:移动鼠标 单指轻点:鼠标左键点击 双指同时轻点:鼠标右键点击 双指同时上下滑动:鼠标中键滑轮 三指同时下滑:返回桌面 四指同时上滑:进入程序切换页面 单指快速点击两下且第二下不放开并移动…