Страница 1 из 1
Массив, как источник данных для сводной таблицы
Добавлено: 07 окт 2010, 22:33
AlexZZZ
Доброго времени суток всем!
Вопрос по существу: есть програмно сформированный (без применения ADO) двумерный массив данных, представляющий из себя базу данных (первая строка - заголовки столбцов, остальное - данные), числом строк превышающий 65536 строк.
Как сформировать на его основе сводную таблицу в Excel 2003? Т.е. нужно каким-то образом присвоить объекту PivotCache значение массива без переноса данных на лист. И пока не получается.
Подскажите, кто знает, будьте добры!
Re: Массив, как источник данных для сводной таблицы
Добавлено: 11 ноя 2010, 23:22
AlexZZZ
Ну что, никто не сможет помочь?
Re: Массив, как источник данных для сводной таблицы
Добавлено: 16 ноя 2010, 19:25
Aent
Разгрузите ваш массив в файл одного из стандартных форматов (csv,dbf,mdb) а затем стройте сводную таблицу на основе внешнего источника данных
Re: Массив, как источник данных для сводной таблицы
Добавлено: 16 ноя 2010, 23:42
AlexZZZ
А как это сделать из Excel (загрузить массив в файл csv, dbf или mbd)?
Как построить сводную таблицу из внешнего источника данных я разберусь.
Re: Массив, как источник данных для сводной таблицы
Добавлено: 16 ноя 2010, 23:52
Aent
Самое простое - записать CSV - это же обычный текстовый файл -идёте в цикле по вашей матрице и пишете построчно...
Либо через ADO в MDB Insert'тами
Либо воспользоваться одним из многочисленных Freeware классов для VBA для работы с dbf и создать dbf
Что именно непонятно?
Re: Массив, как источник данных для сводной таблицы
Добавлено: 23 ноя 2010, 00:28
AlexZZZ
Решил остановиться на первом варианте, как наименее затратном. Записал построчно CSV-файл, проверил его, всё в порядке.
Застопорился на этапе создания кэша сводной таблицы:
Код: Выделить всё
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
Re: Массив, как источник данных для сводной таблицы
Добавлено: 24 ноя 2010, 15:29
AlexZZZ
Уфф, разобрался! Оказывается сначала нужно было создать объект рекордсет с данными. А уже после этого на его основе формировать кэш сводной таблицы. Строка подключения оказалась правильная, но напрямую с методом "Connection" кэша сводной таблицы она не работает. Только через рекордсет:
Правильный пример нашёл во встроенной справке по vba.