title: Refer to QueryTable objects by name
body: <p>I am developing a MS Excel 2013 tool with VBA, which involves the use of QueryTables.</p>
  
  <p>One inconvenience is accessing <strong>existing</strong> QueryTables within an Excel worksheet. Currently, the only method I can find to access a query table is by integer indexing. I came up with the following code for a quick proof of concept:                                                </p>
  
  <pre><code>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
  </code></pre>
  
  <p>This works, but I don't want to do it this way. The end product tool will have up to five different QueryTables. I want to refer to a QueryTable by its name.</p>
  
  <p>How could I translate:</p>
  
  <pre><code>Set QT = querySheet.ListObjects.item(1).QueryTable
  </code></pre>
  
  <p>To something along the lines of:</p>
  
  <pre><code>Set QT = querySheet.ListObjects.items.QueryTable("My Query Table")
  </code></pre>