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 |
|
|
|
|
|