Добрый день.
Может кто сталкивался с подобной задачей.
Необходимо создать запрос для "сборки" таблицы медотом SQL запроса, в зависимости от входного кол-ва элементов, т.е.
Имею входной массив с названиями файлов и следующий код для формирования текста запроса:
И проблема в длине строки. Когда элементов 2-3 - все нормально, но когда их больше, то переменная "Command" приобретает величину больше 255 символов, по типу:
Может кто сталкивался с подобной задачей.
Необходимо создать запрос для "сборки" таблицы медотом SQL запроса, в зависимости от входного кол-ва элементов, т.е.
Имею входной массив с названиями файлов и следующий код для формирования текста запроса:
Код |
---|
For i = 0 To UBound(MyArray) MyArray(i) = Dir_1 & MyArray(i) & ".xlsx" & "`.`Лист1$`" If i > 0 Then Command = Command & " UNION SELECT * FROM " & MyArray(i) Else Command = "SELECT * FROM " & MyArray(i) End If Next With Worksheets(T).ListObjects.Add(SourceType:=0, Source:=Array(Array( _ "ODBC;DSN=Excel Files;DBQ=" & DefDir & ";DefaultDir=" & Dir & ";DriverId=1046;MaxBufferSize=2048;PageTimeout=5;")), _ Destination:=Range("$A$1")).QueryTable .CommandText = Array(Command) .ListObject.DisplayName = "Таблица" .Refresh BackgroundQuery:=False End With |
Command = "SELECT * FROM 'C:\Windows\123\456\789\FileName1.xls.Лист1$ UNION SELECT * FROM 'C:\Windows\123\456\789\FileName2.xls.Лист1$ UNION SELECT * FROM 'C:\Windows\123\456\789\FileName3.xls.Лист1$"...........
Тогда и вылетает ошибка.
Подскажите, возможно есть другой способ построения данных запросов или строковые переменные иных "космических размеров")?
Заранее спасибо.