Excel 求助,如何使用VBA实现远程访问SQL数据库

Excel 求助,如何使用VBA实现远程访问SQL数据库,第1张

VBA

连接

SQL

SERVER

数据库

实例:

Dim

strConn

As

String,

strSQL

As

String

Dim

conn

As

ADODB.Connection

Dim

ds

As

ADODB.Recordset

Dim

col

As

Integer

'连接数据库的字符串

strConn

=

"Provider=SQLOLEDB.1Persist

Security

Info=TrueUser

ID=[user]Password=[password]Initial

Catalog=[database]Data

Source=[数据库IP地址或数据库服务器名称]Connect

Timeout=720

"

'查询语句如果sql语句很长可以用strSQL=strSQL+来连接分成多段的语句,如果语句很短可以只写在一行上。

strSQL

=

"select

*

from

Hy_KPI_Shop_Dept_WeekRpt

"

strSQL

=

strSQL+"where

sdate='2014-01-01'

order

by

sdate,shopid

"

Set

conn

=

New

ADODB.Connection

Set

ds

=

New

ADODB.Recordset

'打开数据库连接

conn.Open

strConn

'该句和数据库连接字符串处的Connect

Timeout=720,表示说如果语句运行时间很长,这两句可以延长vba的等待时间,没有这两句,vba往往会报查询超时。

conn.CommandTimeout

=

720

With

ds

'根据查询语句获得数据

.Open

strSQL,

conn

'自动控制加入所有列标题

For

col

=

0

To

ds.Fields.Count

-

1

'请注意Offset(0,

col)中的参数一定要正确,该句表示标题将会写在第一行,从A1单元格开始,如果不想写入标题行,可将下面这句注释掉。

Worksheets("门店各课KPI周报").Range("A1").Offset(0,

col).Value

=

ds.Fields(col).Name

Next

'加入所有行数据,该句表示查询结果将会写在第一行,从A1单元格开始,但是由于标题行写在第一行了,所以实际这一行从标题下的一行写入。

Worksheets("sheet1").Range("A1").Offset(1,

0).CopyFromRecordset

ds

End

With

'关闭数据库连接和清空资源

Set

ds

=

Nothing

conn.Close

Set

conn

=

Nothing

1、首先打开SQLServer数据库,准备一个要导入的数据表,如下图所示,数据表中插入一些数据

2、接下来打开Excel软件,点击数据菜单,然后选择其他来源下面的来自SQLServer选项

3、然后会d出数据库连接向导界面,在输入框里面输入服务器名称,也就是计算机名

4、接下来就会出现导入内容的具体设置界面了,我们选择要导入表,并且选择一个空白单元格位置作为数据的导入位置

5、最后点击确定按钮,我们就可以看到SQLServer中的数据就导入进Excel里了

不需要配置oracle,但需要配置本地客户端,本地odbc引擎,如果是64位系统需要64位的客户端和odbc驱动一套,安装驱动后在System32下面的odbcad32.exe里面配置DSN,测试通过后就可以用adodb连接了,至于连接字符串你可以搜索碰运气也可以自己找,自己找的话你可以这样,任意位置新建空文件,重命名后缀名是.udl,双击打开,第一页的OLEDB提供程序选Microsoft OLE DB Provider for ODBC Drivers,第二页选你自己添加的DSN,输入用户名密码就可以了,记得要勾上允许保存密码,这样你就知道链接字符串的密码是怎么写的了,测试通过后店确定,用记事本打开这个udl,里面就是你要的链接字符串了。就这么多,不难的,祝你好运


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9926319.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存