Я разрабатываю инструмент MS Excel 2013 с VBA, который включает использование QueryTables. Одно неудобство, с которым я столкнулся, - это доступ к существующим QueryTables на листе Excel. В настоящее время единственным методом, который я могу найти для доступа к таблице запросов, является целая индексация. Я придумал следующий код для быстрого доказательства концепции
Sub RefreshDataQuery()
Dim querySheet As Worksheet
Dim interface As Worksheet
Set querySheet = Worksheets("QTable")
Set interface = Worksheets("Interface")
Dim sh As Worksheet
Dim QT As QueryTable
Dim startTime As Double
Dim endTime As Double
Set QT = querySheet.ListObjects.item(1).QueryTable
startTime = Timer
QT.Refresh
endTime = Timer - startTime
interface.Cells(1, 1).Value = "Elapsed time to run query"
interface.Cells(1, 2).Value = endTime
interface.Cells(1, 3).Value = "Seconds"
End Sub
Это работает, но я действительно не хочу этого делать. Инструмент конечного продукта будет содержать до пяти различных QueryTables. Я хочу, чтобы ссылаться на QueryTable по его имени.
Что было бы неплохо, если бы я мог перевести код ниже
Set QT = querySheet.ListObjects.item(1).QueryTable
Что-то вдоль линий
Set QT = querySheet.ListObjects.items.QueryTable("My Query Table")
Любые предложения будут высоко оценены.