excel宏执行多个查询&获取记录

ykejflvf  于 2023-02-14  发布在  其他
关注(0)|答案(2)|浏览(155)

到目前为止,我只有一个标准的数据库连接(通过菜单或工具栏),这是工作正常。但是,我想获取三个不同时期的记录(每个表可以有不同的查询)。在提出这一点之前,我做了各种尝试,但我不能通过宏获取任何记录。我正在寻找建议或方向来实现我的要求。
单元格A1 =“姓名”。
对于工作表1:从测试数据库中选择“名称”
对于工作表2:从测试数据库中选择“名称”,其中数据〉= abc &日期〈=xyz
对于工作表3:当数据〉= xyx时,从测试数据库中选择“名称”

kx7yvsdv

kx7yvsdv1#

使用“开发工具”选项卡中的“记录”宏按钮,可以记录在使用所需参数创建此类连接时执行的所有操作。
然后停止录制,转到VBA屏幕,看看代码的外观,然后根据自己的喜好更改代码,或者以这种方式录制所有三个版本。
现在将这些VBA代码集成到VBA脚本中。

zaqlnxep

zaqlnxep2#

请尝试使用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):
1.定位到工作簿所在的目录
1.右键单击并选择新建...〉Microsoft数据链接。
1.将名称更改为一个好的名称(名称.udl可能)
1.双击新文件并设置创建和测试与数据库的连接的设置
有什么问题尽管问!
菲利普

相关问题