VBA基础(宏编程)

VBA介绍:

Visual Basic for Applications(VBA)是 VisualBasic 的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展 Windows 的应用程序功能,特别是Microsoft Office软件。

编写第一个VBA宏

」:简单的说,宏是一段可以运行的 VBA 代码片段。

首先打开excel的开发者模式:

VBA基础(宏编程)_第1张图片

数据类型:

VBA基础(宏编程)_第2张图片

变量格式:

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基础(宏编程)_第3张图片

 

VBA连接Oracle:

方法:免安装客户端+ odbc

1、下载基本包

本地需要准备两个包 instantclient-basic 和 instantclient-odbc

官网:https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html

VBA基础(宏编程)_第4张图片

 

 

 

下载后将两个包解压到同一个目录下,我是解压到D:\D\w\instantclient_19_18,记住这个位置

VBA基础(宏编程)_第5张图片

 配置oracle 网络文件

 需要配置一个网络文件 tnsnames.ora ,这个文件的作用是让本地客户端知道需要访问的数据库地址和相关信息
        在刚才解压的那两个包的目录下新建 “network\admin” 这个目录,将tnsnames.ora 这个文件放在这下面
VBA基础(宏编程)_第6张图片

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)
    )
  )

VBA基础(宏编程)_第7张图片

 第三步、安装odbc 驱动、配置DSN数据源

1 安装odbc 驱动

         打开我们电脑的数据源【我是win10 64位的】,可以看到目前的驱动程序没得和oracle 相关的

电脑搜索:odbc

VBA基础(宏编程)_第8张图片

 点击压缩文件后

VBA基础(宏编程)_第9张图片

就有驱动了

VBA基础(宏编程)_第10张图片 

2 配置DSN数据源

为啥要配置这玩意?其实是因为我们没有安装相应的客户端,excel 只有先从windows 的环境中查找是否有相应的驱动
         同样的在 ODBC数据源管理程序(64位)这里,点击 用户 DSN ⇒ 添加

VBA基础(宏编程)_第11张图片

VBA基础(宏编程)_第12张图片 

 Data Source Name 这里随便填写
TNS Service Name: 必须填写你 oracle -》 network\admin 目录下的 tnsnames.ora 文件中为远程数据库设置别名
D:D\w\instantclient_19_18\network\admin\tnsnames.ora

VBA基础(宏编程)_第13张图片

 VBA基础(宏编程)_第14张图片

   点击 test connection 进行数据库链接测试,输入用户名密码,点击ok 进行测试,在填写正确的情况下就会 弹出 connection successful.
        如果弹出其他的请自行百度,一般是上面哪些信息填写错误了
User name :远程数据库用户登录的密码
Password :登录密码
VBA基础(宏编程)_第15张图片

 VBA基础(宏编程)_第16张图片

VBA基础(宏编程)_第17张图片 

VBA基础(宏编程)_第18张图片 

第四步 VBA链接数据库测试 

4.1 设置相应的 Windows 环境变量
1、path 环境变量后边加上客户端文件地址:D:\D\w\instantclient_19_18

2、TNS_ADMIN 新建这个变量,值根据自己的情况按照图示填写

3、新建 NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK 这个变量是为了防止 oracle 中文变成乱码VBA基础(宏编程)_第19张图片

VBA基础(宏编程)_第20张图片 

 代码连接:链接字符串说明

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

VBA基础(宏编程)_第21张图片

VBA基础(宏编程)_第22张图片 

VBA基础(宏编程)_第23张图片
————————————————
版权声明:本文为CSDN博主「dadaowuque」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dadaowuque/article/details/121366531

你可能感兴趣的:(编辑器,vba)