bei Select die Spalte A ausgewählt.
Wenn Du die Werte aus SpalteB (anstelle [SpalteA] ) haben möchtest, dann ändere entsprechend die Select-Klausel wie folgt:
sSQL = "SELECT [SpalteB] " & _
"FROM `QSheet$` " & _
"WHERE [SpalteA] Like '%.AI' " & _
"OR [SpalteA] Like '%.BI' " & _
"OR [SpalteA] Like '%.CI' "
Nette Seite zum einlesen über SQL, ADO und v.m.: SQL Tutorial (w3schools.com)
Wie geht es mit der vRet weiter? Kann ich die jetzt direkt einsetzen?
Warum haste das noch nicht ausprobiert? :)
vRet ist ein Variant-Array. Der Autofilter erwartet ein String-Array.
Loope von Untergrenze vRet zu Obergrenze vRet.
Lese das Datenfeld aus und caste von Variant zu String in ein separates String-Array.
Mit dem String-Array füttern wir dann den Autofilter.
Zusammengefasst:
Dim v As Variant
Dim vRet As Variant
Dim sSQL As String
Dim sArr() As String 'Dimension unbekannt
Dim i As Long
sSQL = "SELECT [SpalteB] " & _
"FROM `QSheet$` " & _
"WHERE [SpalteA] Like '%.AI' " & _
"OR [SpalteA] Like '%.BI' " & _
"OR [SpalteA] Like '%.CI' "
With CreateObject("ADODB.Recordset")
.Open sSQL, "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0 Xml"""
v = Application.Transpose(.getrows)
.Close
End With
'*** aus 2D mach 1D
vRet = Application.Transpose(v)
'*** aus Variant mach String
ReDim sArr(LBound(vRet) To UBound(vRet)) '*** Dimension bekannt -> dimensionieren
For i = LBound(vRet) To UBound(vRet) Step 1
sArr(i) = CStr(vRet(i)) '*** ¹Typecasting
Next i
'*** ab hier dann Dein Autofilter mit den angesprochenen Parameter und dem Array füttern
'*** // TODO :)
' ¹
'CStr() bedeutet ConvertString(aus Variant/Integer/was auch immer);
'mehr dazu hier: https://docs.microsoft.com/de-de/office/vba/language/concepts/getting-started/type-conversion-functions
|