У меня есть таблица на листе в MS Excel, и я пытаюсь записать запрос из таблицы1 и вставить результаты в другой лист. (в таблице есть другие подробности, которые позволяют иметь 2 строки с одним и тем же поставщиком и продуктом).
Table1:
Product Supplier
apple A
apple A
apple B
apple C
banana A
Я хочу сделать запрос наподобие этого: «ВЫБЕРИТЕ поставщика из таблицы1 ГДЕ Продукт =» яблоко "GROUP BY Supplier". Сначала я просто попытался написать запрос с именами таблиц и столбцов, но это не сработало. Поэтому я попытался использовать диапазоны вместо имен таблиц и столбцов.
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim tblRng As Range
Dim clmRng1 As Range
Dim clmRng2 As Range
strFile = ThisWorkbook.FullName
strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFile & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open strCon
tblRng = Sheets("sheet1").ListObjects("table1").DataBodyRange
clmRng1 = Sheets("sheet1").ListObjects("table1").ListColumns("Supplier").DataBodyRange
clmRng2 = Sheets("sheet1").ListObjects("table1").ListColumns("Product").DataBodyRange
strSQL = "SELECT " & clmRng1 & " FROM " & tblRng & " WHERE " & clmRng2 & " = 'apple' GROUP BY " & clmRng1
rs.Open strSQL, cn
Debug.Print rs.GetString
Я получаю сообщение об ошибке «Переменная объекта или переменная блока не установлена». Моя главная проблема в том, что я чувствую, что это очень косвенный способ сделать это, и мне было интересно, есть ли более простой способ выполнить sh эту задачу?