在我们公司最常用的软件是EXCEL,其实很多企业使用EXCEL的频率都很高,但对于我们IT来说EXCEL并不只是做表格、计算数据用的,更多的是自己编写宏(VBA)来查询各个商业部门所需要的数据。如果大家工作的公司里有数据库,那么用宏编写的EXCEL来查询数据就再好不过的了。
那么VB和VBA有什么不同呢?
1. VB是设计用于创建标准的应用程序,而VBA是使已有的应用程序(EXCEL等)自动化
2. VB具有自己的开发环境,而VBA必须寄生于已有的应用程序.
3. 要运行VB开发的应用程序,用户不必安装VB,因为VB开发出的应用程序是可执行文件(*.EXE),而VBA开发的程序必须依赖于它的"父"应用程序,例如EXCEL.
尽管存在这些不同,VBA和VB在结构上仍然十分相似.事实上,如果你已经了解了VB,会发现学习VBA非常快.相应的,学完VBA会给学习VB打下坚实的基础.
如何进入VBA模式?
新建EXCEL表格,按下ALT+F11,如图
打开之后如何编写呢?这里有两种方法:
1.双击表格名,直接编写
2.右键—>插入—>模块
个人习惯使用第二种方法,用第二种方法模块化比较清晰,修改方便,出错时容易查找故障
 
我们先来看一个做好的VBA代码
我们一段一段分析

Sub OpenMyMenu()
    
    Dim Menu As CommandBarPopup
    Dim Cmd As CommandBarControl
     Dim Cmd1 As CommandBarControl    /定义变量名
   
Set Menu = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup, before:=10, temporary:=True)
     Menu.Caption = "Information_Update"    /定义菜单名叫  Information_Update
     Menu.BeginGroup = True
Set Cmd = Menu.Controls.Add(Type:=msoControlButton)
    Cmd.Caption = "Update_Information"
    Cmd.OnAction = "Update_Information"   /点击后显示选项为 Update_Information
   
Set Cmd = Nothing
Set Menu = Nothing
    End Sub
这一段是定义菜单和下拉菜单选项的语句,在菜单栏里可以自己定义选项
Private Function conn3() As String
conn3 = "Provider=MSDAORA.1;Persist Scurity Info=False; user id=222;password=111;data source=ST124"
End Function
 
这是连接ORACLE数据库的语句,连接其他数据库的语句:
1. Visual Foxpro
[PROVIDER=MSDASQL.1]; ’或者为MSDASQL
DRIVER={Driver Name};
SourceDB=Path;
SourceType=DBF
例如:
cnna.ConnectionString = “PROVIDER=MSDASQL; ”
+ “DRIVER={Microsoft Visual Foxpro Driver};”
+ “SourceDB=D:\data\;”
+ “SourceType=DBF”
2.SQL Server
[PROVIDER=MSDASQL;]
DRIVER={Driver Name};
SERVER=server;
DATABASE=database;
UID=user;
PWD=password
例如:
cnnb.ConnectionString = “PROVIDER=
MSDASQL;”
+ “DRIVER={SQL Server};”
+ “SERVER=servera;”
+ “DATABASE=pubs;”
+ “UID=sa;”
+ “PWD=yyuui”
3. Sybase数据库
[PROVIDER=MSDASQL;]
DRIVER={Driver Name};
SRVR=server; ’必须是SRVR,不能是SERVER
DB=database; ’可以是DB,也可以是DATABASE
DSN=; ’可以省略
UID=user;
PWD=passwod;
PERSIST SECURITY INFO=False
例如:
cnnc.ConnectionString=
“PROVIDER=MSDASQL;”
+ “DRIVER={Sybase System 11};”
+ “SRVR=serveru; ”
+ “DSN=;”
+ “DB=dataa;”
+ “UID=sa;”
+ “PWD=dqwe;”
+ “PERSIST SECURITY INFO=False”
4. Oracle数据库
[PROVIDER=MSDASQL;]
DRIVER={Driver Name};
SERVER=server;
databasename=database;
databasefile=path;
DSN=;
UID=user;
PWD=password;
例如:
cnnd.ConnectionString =
“PROVIDER=MSDASQL; ”
+ “DRIVER={Microsoft ODBC for Oracle};”
+ “SERVER=Webserver;”
+ “DSN=;”
+ “databasename=dataall;”
+ “databasefile=d:\data\;”
+ “UID=dba;”
+ “PWD=killer”
Sub Update_Information()
On Error Resume Next
Dim i As Integer
Dim j As Integer
Dim s_date As String   /定义变量
i = 0
Set rst = New ADODB.Recordset
ActiveSheet.Name = "sheet1" /激活工作表
Worksheets("sheet1").Range("a4:k7000").ClearContents /清空单元格
With Worksheets(ActiveSheet.Name)
    rst.Open "select section_no,item_no,name, start_stock from items   order by section_no", conn3, adOpenKeyset, adLockReadOnly
     rst.MoveFirst    /用SQL查询数据库

    Do While Not rst.EOF
         .Cells(4 + i, 1) = rst.Fields("section_no") /从第四行第一个单元格开始赋值
        .Cells(4 + i, 2) = rst.Fields("item_no")
        .Cells(4 + i, 3) = rst.Fields("name")
        .Cells(4 + i, 4) = rst.Fields("start_stock")  /把结果复制到相应的单元格里,如A1就代表(1,1)以此推类
        rst.MoveNext
       i = i + 1
   
    Loop
   
    rst.Close
End With
End Sub
至此,这个宏就做好了。其实用VBA查询数据最重要的是SQL这一块,过几天我再发个关于SQL的教程给大家。如还有不明白的地方请留言给我。

转载于:https://blog.51cto.com/komichu/163371

大家一起学习用VBA查询数据相关推荐

  1. 小汤学编程之MySQL(二)——数据库操作、表结构操作、表数据操作、查询数据和数据类型

    一.数据库操作 1.创建数据库     2.查询数据库     3.修改数据库     4.使用数据库 二.表结构操作 1.创建表     2.查询表     3.修改表     4.删除表 三.表数 ...

  2. 学习用C#在Unity中创建一个2D Metroidvania游戏

    学习用C#在Unity中创建一个2D Metroidvania游戏 你会学到: 构建2D Unity游戏 用C#编程 玩家统计,水平提升,米尔和远程攻击 敌方人工智能系统 制定级别和级别选择 Lear ...

  3. Elasticsearch 查询数据的工作原理是什么?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:8rr.co/GsAa 面试题 ES 写入数据的工作原理是什 ...

  4. android用于查询数据的方法,android: SQLite查询数据

    掌握了查询数据的方法之后,你也就将数据库的 CRUD 操 作全部学完了.不过千万不要因此而放松,因为查询数据也是在 CRUD 中最复杂的一种 操作. 我们都知道 SQL 的全称是 Structured ...

  5. ES 查询数据的工作原理是什么?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | http://8rr.co/GsAa 面试题 ...

  6. es 删除数据_es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?...

    面试题 es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?底层的 lucene 介绍一下呗?倒排索引了解吗? 面试官心理分析 问这个,其实面试官就是要看看你了解不了解 es 的一些基 ...

  7. elasticsearch 工作原理_【154期】面试官:你能说说 Elasticsearch 查询数据的工作原理是什么吗?...

    点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅 阶段汇总集 ...

  8. 数据库应用——DQL查询数据(连表查询 子查询 详细案例)

    DQL查询数据 DQL Select完整的语法 练习用的sql脚本 指定查询字段 where 条件子句 连表查询(重要) 三种join的比较 连表查询练习 自连接 分页和排序 子查询 分组和过滤 DQ ...

  9. mysql 从a到z 查询_mysql 查询数据时按照A-Z顺序排序返回结果集

    mysql 查询数据时按照A-Z顺序排序返回结果集 $sql = "SELECT * , ELT( INTERVAL( CONV( HEX( left( name, 1 ) ) , 16, ...

最新文章

  1. Linux进程的分析和执行过程
  2. Google 出品的 Java 编码规范,权威又科学,强烈推荐
  3. mysql分页tmp_count,MySQL MyISAM和InnoDB引擎的写入速度优化比较,分页速度优化
  4. matlab中矩阵的累加,累加和与累乘积在matlab中-read.ppt
  5. java多线程 -- 创建线程的第三者方式 实现Callable接口
  6. php制作随机地图,随机生成Roguelike游戏地图算法
  7. 在 Linux 上使用 Meld 比较文件夹
  8. 网页益智游戏怎么制作_休息一下,或者:如何使用Java 12制作出色的益智游戏...
  9. 孩子学python用什么教材比较好-python大学里用哪本教材比较好?
  10. jquery的ajax用法
  11. 动图展示16个Sublime Text快捷键用法 ---------------物化的sublime
  12. weblogic 找不到数据源问题
  13. mac 升级到mavericks 安装php扩展现问题
  14. python列表的增删查改,已经冒泡,选择,快速排序
  15. 【密码学】七、密钥管理
  16. 为什么说BMC才是国产服务器的“命门”?
  17. Helix --未完待续
  18. SEO技术大师-论坛网站SEO设置方法
  19. Datawhale 知识图谱组队学习之Task 4 用户输入->知识库的查询语句
  20. 【车载以太网测试从入门到精通】——车载以太网休眠唤醒压力测试

热门文章

  1. 电脑剪切,电脑剪切快捷键
  2. 多彩绚丽渐变Mac动态壁纸
  3. Cypress-should()常见断言
  4. 极路由3-HC5861无拆机获取root连接ssh
  5. 用python通过selenium自动化测试抓取天猫店铺数据
  6. 刁肥宅手笔:纯C语言利用链栈实现从后缀表达式Array中顺序输入表达式并求值
  7. 苹果风波不断,Siri语音助手面临隐私诉讼
  8. java没有编译器吗_java有编译器吗
  9. 【BZOJ】4355: Play with sequence
  10. noip2010引水入城-搜索+贪心