Доброго времени суток всем!
Вопрос по существу: есть програмно сформированный (без применения ADO) двумерный массив данных, представляющий из себя базу данных (первая строка - заголовки столбцов, остальное - данные), числом строк превышающий 65536 строк.
Как сформировать на его основе сводную таблицу в Excel 2003? Т.е. нужно каким-то образом присвоить объекту PivotCache значение массива без переноса данных на лист. И пока не получается.
Подскажите, кто знает, будьте добры!
Массив, как источник данных для сводной таблицы
Модератор: Naeel Maqsudov
Ну что, никто не сможет помочь?
А как это сделать из Excel (загрузить массив в файл csv, dbf или mbd)?
Как построить сводную таблицу из внешнего источника данных я разберусь.
Как построить сводную таблицу из внешнего источника данных я разберусь.
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
Самое простое - записать CSV - это же обычный текстовый файл -идёте в цикле по вашей матрице и пишете построчно...
Либо через ADO в MDB Insert'тами
Либо воспользоваться одним из многочисленных Freeware классов для VBA для работы с dbf и создать dbf
Что именно непонятно?
Либо через ADO в MDB Insert'тами
Либо воспользоваться одним из многочисленных Freeware классов для VBA для работы с dbf и создать dbf
Что именно непонятно?
Андрей Энтелис,
aentelis.livejournal.com
aentelis.livejournal.com
Решил остановиться на первом варианте, как наименее затратном. Записал построчно CSV-файл, проверил его, всё в порядке.
Застопорился на этапе создания кэша сводной таблицы:
Видимо, что-то не в порядке со строкой подключения. Но что именно?
Данные взял здесь: http://connectionstrings.com/textfile
Застопорился на этапе создания кэша сводной таблицы:
Код: Выделить всё
Dim PTcache As PivotCache
Dim ConString As String
Dim QueryString As String
Dim file_name As String
Set PTcache = ActiveWorkbook.PivotCaches.Add _
(SourceType:=xlExternal)
file_name = "C:\" 'Файл для подключения C:\Data.csv
ConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & file_name & _
"; Extended Properties=""text;HDR=Yes;FMT=Delimited"";"
QueryString = "SELECT * FROM Data.csv"
With PTcache
.Connection = ConString 'На этой строке выдаёт ошибку: _
"Не источник данных ODBC и не веб-запрос"
.CommandText = QueryString
End With
Данные взял здесь: http://connectionstrings.com/textfile
Уфф, разобрался! Оказывается сначала нужно было создать объект рекордсет с данными. А уже после этого на его основе формировать кэш сводной таблицы. Строка подключения оказалась правильная, но напрямую с методом "Connection" кэша сводной таблицы она не работает. Только через рекордсет:
Правильный пример нашёл во встроенной справке по vba.
Код: Выделить всё
Set PTcache.Recordset = newRecordset