回答

收藏

Excel ODBC数据连接查询刷新每个查询所花费的时间

技术问答 技术问答 172 人阅读 | 0 人回复 | 2023-09-12

我正在尝试测试从Excel查询数据连接运行的三个变体。
# O+ Q3 D/ x4 [% r1 u! G4 m3 |6 S我有三个单独的数据连接和三个单独的选项卡,它们分别从每个连接中获取数据。
% g% p- R  k! U每个查询的连接字符串相同,只有命令文本(Oracle SQL)不同。, A7 K6 v8 x! r" f, p
Excel每次查询的执行时间能否查看?
. o* C/ U, q- V( b: h$ D! b
我专门用版本 Excel 2016 MSO 16.0.4456.1003 64bit! h, p1 p5 r3 R: g7 t4 \$ R. t& k
                                                                , C8 D& I- m8 r- l1 {2 O- a3 E' U; l; p
    解决方案:                                                               
2 A: v; a- t$ b" R8 R" _5 K  G                                                                可能是这样的事情(假设所有的连接都把结果放在工作表中,而不是数据透视表中):
# b8 k" {" U, e! fSub TimeQueries()    Dim oSh As Worksheet    Dim oCn As WorkbookConnection    Dim dTime As Double    For Each oCn In ThisWorkbook.Connections        dTime = Timer        oCn.Ranges(1).ListObject.QueryTable.Refresh False        Debug.Print Timer - dTime,oCn.Name,oCn.Ranges(1).Address(external:=True)    NextEnd Sub操作此命令:
) E* ^7 t6 `/ X[ol]Alt F11转到VBA编辑器。
4 ]3 ^; P6 y: C( r) Y$ M7 B菜单:插入模块。
2 Z; ?% _) ~9 Q将代码粘贴到窗口中。! d' q, P3 K# ?1 s
关闭VBA编辑器。
" y) k8 i# `5 g- H2 s7 YAlt F8弹出宏列表。选择新的,然后单击操作。
8 z3 D, C% ]8 ~Alt F11再到VBA编辑器。1 S! V  |7 b5 ~) T. J1 A
Ctrl  G立即打开窗格,显示结果。[/ol]如需将代码写入单元格,请使用以下版本:& f( z$ t0 ~% w! i
Sub TimeQueries()    Dim oSh As Worksheet    Dim oCn As WorkbookConnection    Dim dTime As Double    Dim lRow As Long    Set oSh = Worksheets("Sheet4") 'Change to your sheet name!    oSh.Cells(1,1).Value = "Name of Connection"    oSh.Cells(1,2).Value = "Location"    oSh.Cells(1,1).Value = "Refresh time (s)"    For Each oCn In ThisWorkbook.Connections        lRow = lRow                                dTime = Timer        oCn.Ranges(1).ListObject.QueryTable.Refresh False        oSh.Cells(lRow,3).Value = Timer - dTime        oSh.Cells(lRow,1).Value = oCn.Name        oSh.Cells(lRow,2).Value = oCn.Ranges(1).Address(external:=True)    NextEnd Sub
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则