到目前为止,我只有一个工作正常的标准数据库连接(通过菜单或工具栏)。但是我想获取三个不同时期的记录(每张纸可以有不同的查询)。在提出这个之前,我做了各种尝试,但我无法通过宏获取任何记录。我正在寻找建议或方向来实现我的要求。
单元格 A1 =“名称”。
对于,sheet1:从 testDB 中选择“名称”
for,sheet2:从 testDB 中选择“名称”,其中数据 >= abc & 日期 <=xyz
对于,sheet3:从 testDB wehre 数据中选择“名称”> = xyx
使用“开发人员”选项卡中的“记录宏”按钮记录您在使用所需参数创建此类连接时执行的所有操作。
然后停止录制并转到您的 VBA 屏幕,查看代码的外观,然后根据自己的喜好将其更改为您想要的位置,或者以这种方式录制所有三个版本。
现在将这些 VBA 代码集成到您的 VBA 脚本中。
尝试使用 ADODB 在代码中完成所有操作。
首先,在每张纸上,在单元格 A1(可能)中创建一个新的命名范围,称为:
“查询”和 xsheet.name
在该单元格中放置特定于该工作表的查询
然后在 VBA 代码模块中使用此代码:
sub getData()
dim cn as new adodb.connection
dim rs as new adodb.recordset
dim connStr as string ' connection string
dim sUDLFile as string ' path and name of Microsoft Data Link File (UDL FILE)
dim xSheet as worksheet
connStr="File Name=" & sUDLFile
cn.open connstr
'loop through all the worksheets
for each xSheet in thisworkbook.worksheets
with rs
' open the connection to the db...
.activeconnection=cn
'get the query from the range on the worksheet!
sQry=xsheet.range("Query" & xsheet.name).text
' open the query from the DB
.open sQry
' dump the dataset onto the worksheet with one line of code in B5 cell!
xsheet.range(B5).copyfromrecordset rs
.close
end with
next
' clean up and release memory
cn.close
set cn=nothing
set rs=nothing
'
end sub
在 MS Windows 资源管理器中创建连接字符串(UDL 文件):
有什么问题就问吧!
菲利普