截至目前,我只有一个标准的数据库连接(通过菜单或工具栏)工作正常。但是我想获取三个不同时期的记录(每个表可以有不同的查询)。在定位之前我做了各种尝试,但我无法通过宏获取任何记录。我正在寻找实施我的要求的建议或方向。
单元格A1 ="名称"。
for,sheet1:select" name"来自testDB
for,sheet2:select" name"来自testDB,其中data> = abc&日期< = xyz
for,sheet3:select" name"来自testDB wehre data> = xyx
答案 0 :(得分:0)
使用“开发工具”选项卡中的“记录宏”按钮记录使用所需参数创建此类连接时所执行的所有操作。
然后停止录制并转到VBA屏幕,查看代码的外观,并将其更改为您喜欢的位置或以这种方式记录所有三个版本。
现在将这些VBA代码集成到您的VBA脚本中。
答案 1 :(得分:0)
尝试使用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 FILE):
任何问题,请问!
菲利普