Klasse QueryTables (Excel VBA)

Eine Auflistung von Queryable -Objekten. Um eine QueryTables -Klassenvariable zu verwenden, muss sie zuerst instanziert werden, beispielsweise


Dim qts as QueryTables
Set qts = ActiveSheet.QueryTables

For Each

Hier ist ein Beispiel für die Verarbeitung der QueryTables -Elemente in einer Sammlung


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

Add

Erstellt eine neue Abfragetabelle.

Eine von dieser Methode erstellte Abfrage wird erst ausgeführt, wenn die Refresh -Methode aufgerufen wird.

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

Hier sind die benannte Argumente :

Connection (String) - Die Datenquelle für die Abfragetabelle.

Destination - Range

Optional arguments

Das folgendes Argument ist optional

Sql (QueryTable) - Die SQL-Abfragezeichenfolge, die für die ODBC-Datenquelle ausgeführt werden soll.

Count

Gibt einen Long-Wert zurück, der die Anzahl der Objekte in der Auflistung darstellt.


Dim lngCount As Long
lngCount = ActiveSheet.QueryTables.Count

Item

Gibt ein einzelnes Objekt aus einer Auflistung zurück.

Item (Index)

Index: Der Name oder die Indexnummer für das Objekt.


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