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

时间:2017-03-23 09:53:04

标签: sql excel oracle odbc excel-2016

我正在尝试测试从Excel数据连接运行的查询的三种变体。

我有三个单独的数据连接和三个单独的选项卡,分别从每个连接获取数据。

每个查询的连接字符串都相同,只有命令文本(Oracle SQL)不同。

  

Excel中是否有办法查看每个查询的执行时间?

我专门使用版本Excel 2016 MSO 16.0.4456.1003 64bit

1 个答案:

答案 0 :(得分:1)

或许这样的事情(假设所有连接都将其结果放在工作表表格中,而不是在数据表中):

Sub 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)
    Next
End Sub

运行此:

  1. Alt + F11 转到VBA编辑器。
  2. 从菜单:插入模块。
  3. 在窗口中粘贴代码。
  4. 关闭VBA编辑器。
  5. Alt + F8 会显示宏的列表。选择新的并单击运行。
  6. 再次
  7. Alt + F11 到VBA编辑器。
  8. Ctr l + G 打开包含结果的即时窗格。
  9. 如果您希望代码写入单元格,请使用以下版本:

    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 + 1
            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)
        Next
    End Sub