Sto sviluppando uno strumento MS Excel 2013 con VBA che prevede l'utilizzo di QueryTables. Un inconveniente che sto vivendo è l'accesso a esistenti a QueryTables all'interno di un foglio di lavoro Excel. Attualmente, l'unico metodo che riesco a trovare per accedere a una tabella di query è l'indicizzazione di numeri interi. Sono venuto con il seguente codice per una rapida prova di concettoVBA di Excel fa riferimento a oggetti QueryTable per nome
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
Questo funziona ma davvero non voglio farlo in questo modo. Lo strumento del prodotto finale avrà fino a cinque diversi QueryTables. Quello che voglio è fare riferimento a una QueryTable con il suo nome.
Quanto sarebbe bello è se potessi tradurre il codice qui sotto
Set QT = querySheet.ListObjects.item(1).QueryTable
Per qualcosa sulla falsariga
Set QT = querySheet.ListObjects.items.QueryTable("My Query Table")
Tutti i suggerimenti molto sarebbero apprezzati.
Imposta QT = querySheet.ListObjects.items.QueryTable non viene compilato. Non vedo alcun elemento appropriato per ListObjects. Per il tuo secondo suggerimento, Imposta QT = Foglio di lavoro ("QTable"). QueryTables ("My Query Table"), questo non funziona per me in quanto il QTable era preesistente. –
L'ho modificato in: 'Imposta QT = querySheet.ListObjects.items (1) .QueryTable' che è simile al tuo codice. –
cosa intendi con "foglio di lavoro preesistente?" ... il che è ovvio: cambia il nome di QT in uno che hai veramente. È sempre possibile controllare il numero di QT nel foglio in questo modo: 'Fogli di lavoro Debug.Print (" QTable "). QueryTables.Count' e il nome di ciascun QT in questo modo:' l ho. Puoi sempre controllare il numero di QT nel foglio in questo modo: 'Fogli di lavoro Debug.Print (" QTable "). QueryTables (1) .Name' per il primo. –