
方法如下:
假设数据库均为Access文件:
ThisWorkbookPath & "\数据库1accdb"
ThisWorkbookPath & "\数据库2accdb"
cnnOpen "Provider=MicrosoftACEOLEDB120;Data Source=" & ThisWorkbookPath & "\数据库1accdb"
对于非连接数据库数据库2,数据表前面需要加上数据库全名:
[MS Access;pwd=密码;Database=" & ThisWorkbookPath & "\数据库2accdb;]数据表名
百度经验有详细的图文文章(网页链接)介绍编程语句,注意一点,不同的数据库连接代码是不同的。
另外,例子代码是把表中的数据全部读到一个表里面,你可以然后在VLOOKUP填写表的BC列。
如下:自己改一下:
Sub aa()Dim cn As New ADODBConnection
Dim rs As New Recordset
Str1 = "select 区域,内=SUM(case when 新替换区内外='替换区内' then 1 else 0 end ),外=SUM(case when 新替换区内外='替换区外' then 1 else 0 end ) from 宏站 group by 区域"
strcn = "Provider=sqloledb;Database=test;Uid=sa;Pwd=30687724;datasource=127001,1433;"
cnOpen strcn
rsOpen Str1, cn
Dim i
For i = 1 TorsFieldsCount
Cells(1, i) = rsFields(i- 1)Name’FIELDS是从0开始的,所以这里要-1
Range("a2")CopyFromRecordset rs
Next i
说不清楚你要用vba连接数据库做什么,我知道 你可以通过office的 access 用 新建一个ODBC 数据源的形式 连接Sql数据库……可以把其中的表链接到access中……
换一个思路,曲线一下吧……
Set cn = CreateObject("ADODBConnection")
Set rs = CreateObject("ADODBRecordset")
Dim strCn As String, strSQL As String
strCn = "PROVIDER=SQLOLEDB;DATA SOURCE=127001;UID=sa;password=123457;DATABASE=abc"
cnOpen (strCn)
If cnState <> 1 Then '如果数据库连接未打开
rsClose
cnClose
MsgBox ("数据库连接错误")
else
MsgBox ("数据库连接成功")
End If
'运行SQL语句
'strSQL = "具体的SQL语句",下举例,提取abc表中的aaa,写入sheet1的A列
strSQL = "select aaa,bbb,ccc from abc where bbb>100"
rsOpen strSQL, cn, 1, 1
If Not (rsBOF And rsEOF) Then '有记录存在
For i = 1 To rsRecordCount
Sheets(1)Range("A" & i) = rsFields(0)Value
'Fields(0)对应aaa,Fields(1)对应bbb,类推
rsMoveNext
Next
Else
MsgBox ("数据提取失败")
End If
rsClose
cnClose
以上就是关于VBA同一个函数里怎么链接两个不同数据库全部的内容,包括:VBA同一个函数里怎么链接两个不同数据库、excel用VBA连到数据库读出数据、vba连接SQL数据库方法 等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)