如何在返回查询表的同时记录多个excel power查询的运行持续时间?

j9per5c4  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(191)

我正在寻找一种方法来记录在Excel中运行的多个查询的时间。
我最好使用refresh all来刷新所有查询,然后生成一个单独的表,其中包含查询名称和每个查询的运行时间。
我目前已经尝试了两种方法,但都没有完全达到我的目的:

方法1

方法2

有谁能想到一种方法,我可以生产我所追求的,通过一个不同的方法或调整上述方法之一?
编辑:
我想也许我唯一的选择是创建一个宏,它按名称单独刷新每个查询,将每次刷新前后的时间存储为变量,然后在完成后将这些数字放入一个表中。

am46iovg

am46iovg1#

我能想到的实现目标的最佳方法是编写VBA,它按名称刷新每个查询并将结果存储在表中。
这是我创建的代码...
ListConnectons(查找要在下一个宏中使用的名称):

Sub ListConnections()
Dim cn As WorkbookConnection
Debug.Print "Name", "|", "Description", "|", "|", "RefreshWithRefreshAll", "|", "InModel", "|", "Type"

For Each cn In ThisWorkbook.Connections
Debug.Print cn.Name, "|", cn.Description, "|", cn.RefreshWithRefreshAll, "|", cn.InModel, "|", cn.Type
Next
End Sub

查询计时器(要运行2个查询并在表中存储时间):

Sub QueryTimer()

    Dim StartTime As Double
    Dim EndTime As Double

'##################
'##### Query 1 ####
'##################

    Dim Query1 As Double
    
    StartTime = Timer
    Workbooks("workbook.xlsx").Sheets("Sheet1").Range("B2").Value = StartTime 
    Workbooks("workbook.xlsx").Connections("Query - Query 1").Refresh

    EndTime = Timer
    Workbooks("workbook.xlsx").Sheets("Sheet1").Range("C2").Value = EndTime

    Query1 = Round(Round(EndTime - StartTime, 2) / 60, 2)

    Workbooks("workbook.xlsx").Sheets("Sheet1").Range("D2").Value = Query1

'##################
'##### Query 2 ####
'##################

    Dim Query2 As Double
    
    StartTime = Timer
    Workbooks("workbook.xlsx").Sheets("Sheet1").Range("B3").Value = StartTime
    Workbooks("workbook.xlsx").Connections("Query - Query 2").Refresh

    EndTime = Timer
    Workbooks("workbook.xlsx").Sheets("Sheet1").Range("C3").Value = EndTime

    Query2 = Round(Round(EndTime - StartTime, 2) / 60, 2)

    Workbooks("workbook.xlsx").Sheets("Sheet1").Range("D3").Value = Query2

'##################

    '#### Finished ####
    Dim TotalTime As Double

    TotalTime = Workbooks("workbook.xlsx").Sheets("Sheet1").Range("D4").Value
    
    MsgBox "Refresh completed in " & Format(TotalTime, "0.0") & " Minutes."

End Sub

相关问题