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)