EXCEL VBA与SQL server的交互(一)

这篇具有很好参考价值的文章主要介绍了EXCEL VBA与SQL server的交互(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

开一个系列讲一下VBA与SQL server之间的交互

本片是第一讲,主要内容为在EXCEL端怎么连接SQL数据库,以及简单的数据抽取及保存

首先大家要知道,在EXCEL中是可以不用写VBA代码就能连接各类数据库的:

vba操作sqlserver数据库,数据库,microsoft

可以"数据"标签栏中设置连接数据库

这个本文不涉及

本文只讲用VBA连SQL数据

正文

首先我们要连接SQL server需要引用两个库,也就是:

Microsoft ActiveX Data Objects 6.1 Library

Microsoft ActiveX Data Objects Recordset 6.0 Library

有些低版本的EXCEL可能只有低版本的库,也没关系,大家根据自己的情况选择

vba操作sqlserver数据库,数据库,microsoft

然后就是正式的数据库连接了,先创建一个连接对象:

Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
'也可以合并起来写:Dim con As New ADODB.Connection

接着连接数据,这里我们需要四个参数,也就是数据库地址、具体数据库的名称、用户名、以及密码

conn.ConnectionString = "Provider=SQLOLEDB;Server=127.0.0.1;Database=Test;Uid=sa;Pwd=111111"
conn.Open
'也可以合并起来写:conn.Open "Provider=SQLOLEDB;Server=127.0.0.1;Database=Test;Uid=sa;Pwd=111111"

这里我连接的是我自己本地的数据库,因此地址就是127.0.0.1,具体连接的是Test这个数据库,使用了管理员账号sa,密码为111111

连接好后可以测试一下:

MsgBox ("连接成功!数据库版本:" & conn.Version)

成功后我们来取一下数据库Test中text表里的前100行数据

我们需要几个参数:

Dim sql_text As String
Dim counter As Integer
sql_text = "SELECT top 100 * FROM [Test].[dbo].[test]"

Dim col_name() As String
Dim col_count As Integer

Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset

其中:

  • sql_text 为数据库查询语句
  • counter 为循环参数
  • col_name 为列名数组
  • col_count 为列的数量
  • rs 为查询结果

然后我们来执行数据库查询获取数据:

rs.Open sql_text, conn

再来获取列名及列数量:

col_count = rs.Fields.Count

ReDim Preserve col_name(0 To col_count - 1)
For counter = 0 To col_count - 1
    
    col_name(counter) = rs.Fields(counter).Name

Next counter

为啥要把列名先存进数组中?嗯。。。没啥特别的原因,可能是习惯使用数组

尔后将列名和内容存入表中:

With ThisWorkbook.Worksheets("Sheet1")
    
    .Range("A1").Resize(1, col_count) = col_name
    .Range("A2").CopyFromRecordset rs
    
End With

最后关闭链接,释放rs及conn

Set rs = Nothing
conn.Close
Set conn = Nothing

完整的代码如下:

Sub test()

Dim conn As ADODB.Connection
Set conn = New ADODB.Connection

Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset

conn.ConnectionString = "Provider=SQLOLEDB;Server=127.0.0.1;Database=Test;Uid=sa;Pwd=111111"
conn.Open

Dim sql_text As String
sql_text = "SELECT top 100 * FROM [Test].[dbo].[test]"
Dim counter As Integer
counter = 0

Dim col_name() As String
Dim col_count As Integer

With rs

    .Open sql_text, conn
    
    col_count = .Fields.Count
    ReDim Preserve col_name(0 To col_count - 1)
    
    For counter = 0 To col_count - 1
    
        col_name(counter) = .Fields(counter).Name
        
    Next counter
    
    With ThisWorkbook.Worksheets("Sheet1")
    
        .Range("A1").Resize(1, col_count) = col_name
        .Range("A2").CopyFromRecordset rs
    
    End With

End With

Set rs = Nothing
conn.Close
Set conn = Nothing

End Sub

结语

本文简单的介绍了VBA如何连接数据库,查询并获取数据,以及保存数据

下一篇会将一下一些连接查询保存的细节,比如数据类型、时间数据处理等文章来源地址https://www.toymoban.com/news/detail-842914.html

到了这里,关于EXCEL VBA与SQL server的交互(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • EXCEL VBA从入门到精通 第九章:Excel VBA高级编程技巧

    介绍Excel VBA中的API编程,以及如何利用它们来访问Windows系统的功能。 Excel VBA提供了访问Windows系统API的功能,通过调用API函数可以访问Windows系统底层的功能和资源,例如操作系统、文件系统、网络、注册表等。API函数可以是Windows操作系统内置的函数,也可以是Windows DLL文件中

    2024年02月02日
    浏览(49)
  • EXCEL VBA从入门到精通 第一章:VBA入门

    介绍VBA的定义,作用和优点。 VBA(Visual Basic for Applications)是一种编程语言,是微软Office套件中的一个重要组成部分,主要用于自动化处理Office中的各种操作,包括Excel、Word、PowerPoint、Outlook等。 VBA是一种基于VB(Visual Basic)语言的编程语言,它具有简单易学、功能强大、灵

    2024年02月07日
    浏览(58)
  • VBA技术资料MF36:VBA_在Excel中排序

    【分享成果,随喜正能量】一个人的气质,并不在容颜和身材,而是所经历过的往事,是内在留下的印迹,令人深沉而安谧。所以,优雅是一种阅历的凝聚;淡然是一段人生的沉淀。时间会让一颗灵魂,变得越来越动人。控制自己的脾气,做一个有修养的人。。 我给VBA的定义

    2024年02月15日
    浏览(50)
  • VBA技术资料MF35:VBA_在Excel中过滤数据

    【分享成果,随喜正能量】好马好在腿,好人好在嘴。不会烧香得罪神,不会讲话得罪人。慢慢的你就会发现,一颗好心,永远比不上一张好嘴。。 我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。

    2024年02月14日
    浏览(37)
  • VBA技术资料MF43:VBA_Excel中自动填充

    【分享成果,随喜正能量】以时寝息,当愿众生,身得安隐,心无动乱。愿我们都能,梦见幸福!在踉跄中前进,在跌倒后跃进,逐渐强大.。 我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的

    2024年02月12日
    浏览(32)
  • VBA技术资料MF45:VBA_在Excel中自定义行高

    【分享成果,随喜正能量】可以不光芒万丈,但不要停止发光。有的人陷入困境,不是被人所困,而是自己束缚自己,这时\\\"解铃还须系铃人\\\",如果自己无法放下,如何能脱困? 。 我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率

    2024年02月11日
    浏览(35)
  • VBA技术资料MF54:VBA_EXCEL实时获取鼠标位置

    【分享成果,随喜正能量】若人散乱心,乃至以一花,供养于画像,渐见无数佛。所以发一幅释迦牟尼佛像,与同修善友一起每日在微博上供养,只要有供养之心,便可积累功德。以此回向,愿求者如愿苦者得乐,愿这世界吉祥安乐,愿每颗心充满善念!。 我给VBA的定义:

    2024年02月09日
    浏览(44)
  • Excel+VBA帮助

     目录 一、VBA 入门知识 1、激活工作簿 2、创建新工作簿 3、打开工作簿 4、用编号引用工作表 5、用名称引用工作表 6、将文档保存为 Web 页 7、用 A1 样式的记号引用单元格和单元格区域 8、用编号引用单元格 9、引用行或列 10、用快捷记号引用单元格 11、引用命名单元格区域

    2024年02月05日
    浏览(48)
  • Excel VBA 语法基础

    VBA(Visual Basic for Applications)是一种用于宏编程和自动化任务的编程语言,广泛应用于 Microsoft Office 套件中的各种应用程序,如 Excel、Word 和 PowerPoint。掌握 VBA 基础语法可以帮助您通过编写自定义的宏来增强和自动化这些应用程序的功能。 本文将介绍 Excel VBA 的基础语法,帮

    2024年02月09日
    浏览(43)
  • VBA系列技术资料MF33:VBA_将文本文件转换为Excel

    【分享成果,随喜正能量】一心热枕对待生活,静静的安抚自己内心的急迫和焦虑,你人生的好运,常常在你沉醉于生活时悄悄临门的。。 我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程

    2024年02月13日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包