excel vba如何实现通过表一对表二的数据进行查询与修改,表一为查询表,表二为数据库表

excel vba如何实现通过表一对表二的数据进行查询与修改,表一为查询表,表二为数据库表,第1张

i = 1

j = 1

Do While 表1Cells(i, 1) <> ""

Do While 表2Cells(j, 1) <> ""

k = InStr(表1Cells(i, 1), 表2Cells(j, 1))

If k Then 表1Cells(i, 1) = Left(表1Cells(i, 1), k - 1) + 表2Cells(i, 2) + Right(表1Cells(i, 1), Len(表1Cells(i, 1)) - k - 1)

Exit Do

Else

End If

j = j + 1

Loop

i = i + 1

Loop

这里的表1和表2用真实的表名和文件路径替换

对于这种写法不是很了解,如果用ado+sql可以帮到你。

Sub bb()

Dim cnn As ADODBConnection

Dim rs As ADODBRecordset

Set cnn = New ADODBConnection

mydata = ThisWorkbookPath & "\123mdb"

With cnn

Provider = "microsoftjetoledb40"

Open mydata

End With

Set rs = New ADODBRecordset

Sql = "select Flux_Amount from Mytable"

rsOpen Sql, cnn, 3, 2

ReDim arr(rsRecordCount)

For i = 0 To rsRecordCount - 1

arr(i) = rsFields("Flux_Amount")

rsMoveNext

Next i

MsgBox Join(arr, ",")

End Sub

应该说这种用法比较主流,复制代码到vbe,然后引用ado 28,将access与excel文件放在一个文件夹,将数据库名变动一下,就可以测试了。(要改为同你的access,表名,字段名一致)

VBA

连接

SQL

SERVER

数据库

实例:

Dim

strConn

As

String,

strSQL

As

String

Dim

conn

As

ADODBConnection

Dim

ds

As

ADODBRecordset

Dim

col

As

Integer

'连接数据库的字符串

strConn

=

"Provider=SQLOLEDB1;Persist

Security

Info=True;User

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

ADODBConnection

Set

ds

=

New

ADODBRecordset

'打开数据库连接

connOpen

strConn

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

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

connCommandTimeout

=

720

With

ds

'根据查询语句获得数据

Open

strSQL,

conn

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

For

col

=

0

To

dsFieldsCount

-

1

'请注意Offset(0,

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

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

col)Value

=

dsFields(col)Name

Next

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

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

0)CopyFromRecordset

ds

End

With

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

Set

ds

=

Nothing

connClose

Set

conn

=

Nothing

百度经验有详细的图文文章(网页链接)介绍编程语句,注意一点,不同的数据库连接代码是不同的。

另外,例子代码是把表中的数据全部读到一个表里面,你可以然后在VLOOKUP填写表的BC列。

以上就是关于excel vba如何实现通过表一对表二的数据进行查询与修改,表一为查询表,表二为数据库表全部的内容,包括:excel vba如何实现通过表一对表二的数据进行查询与修改,表一为查询表,表二为数据库表、怎样用VBA取得Access数据库中的查询结果、Excel 求助,如何使用VBA实现远程访问SQL数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存