Clase QueryTables (Excel VBA)

Una colección de objetos QueryTable . Para usar una variable de clase QueryTables, primero debe ser instanciado, por ejemplo


Dim qts as QueryTables
Set qts = ActiveSheet.QueryTables

For Each

A continuación, se muestra un ejemplo de cómo procesar los elementos QueryTables en una colección.


Dim qrytbl As QueryTable
For Each qrytbl In Application.QueryTables
	
Next qrytbl

Add

Crea una nueva tabla de consultas.

Una consulta creada por este método no se ejecuta hasta que se llama al método Refresh .

Add (Connection, Destination, Sql)


Dim cnnConnect As ADODB.Connection 
Dim rstRecordset As ADODB.Recordset 
 
Set cnnConnect = New ADODB.Connection 
cnnConnect.Open "Provider=SQLOLEDB;" & _ 
    "Data Source=srvdata;" & _ 
    "User ID=testac;Password=4me2no;" 
 
Set rstRecordset = New ADODB.Recordset 
rstRecordset.Open _ 
    Source:="Select Name, Quantity, Price From Products", _ 
    ActiveConnection:=cnnConnect, _ 
    CursorType:=adOpenDynamic, _ 
    LockType:=adLockReadOnly, _ 
    Options:=adCmdText 
 
With ActiveSheet.QueryTables.Add( _ 
        Connection:=rstRecordset, _ 
        Destination:=Range("A1")) 
    .Name = "Contact List" 
    .FieldNames = True 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .PreserveFormatting = True 
    .RefreshOnFileOpen = False 
    .BackgroundQuery = True 
    .RefreshStyle = xlInsertDeleteCells 
    .SavePassword = True 
    .SaveData = True 
    .AdjustColumnWidth = True 
    .RefreshPeriod = 0 
    .PreserveColumnInfo = True 
    .Refresh BackgroundQuery:=False 
End With

Arguments

Estos son los argumentos con nombre :

Connection (String) - Origen de datos de la tabla de consultas.

Destination (Range) - Celda de la esquina superior izquierda del rango de destino de la tabla de consultas (el rango en el que se colocará la tabla de consultas).

Optional arguments

Los siguientes argumentos son opcionales

Sql (QueryTable) - Cadena SQL que se debe ejecutar en el origen de datos ODBC.

Count

Devuelve un valor Long que representa el número de objetos de la colección.


Dim lngCount As Long
lngCount = ActiveSheet.QueryTables.Count

Item

Devuelve un solo objeto de una colección.

Item (Index)

Index: Número de índice o nombre del objeto.


Dim qrytbl As QueryTable
Set qrytbl = ActiveSheet.QueryTables(Index:=1)