Ковыряюсь с подключением сводной таблицы к внешнему источнику, удалось настроить такое подключение с созданием PT с нуля. Работает все замечательно. Но вот с обновлением подключения в уже имеющейся таблице (чтобы заново не отстраивать ее структуру) пришлось помучиться. Сначала пытался обновить подключение у PT, которая ссылается на лист той же рабочей книги, ничего не вышло. Пытался менять PivotCaches, прописывая строку подключения и sql-запрос, но все мимо. В итоге, получилось сделать только так: - на листе имеется таблица с внешним подключением и готовой структурой - создаю новое подключение - обновляю подключение в таблице, указав новое:
В итоге, возникли вопросы: - можно ли как-то проще обновлять кэш из внешнего источника (например, добавлять соединение сразу при обновлении кэша через какой-нибудь SourceData)? - и можно ли все-таки переделать PT с внутренним кэшем на внешний. Заранее благодарен!
И ещё выявилась проблема, что при обновлении описанным мной способом, часто слетает подключение. А при построении новой таблицы всегда все в порядке.
Наконец-то удалось решить проблему самому, не прошло и суток. Оставлю информацию здесь, вдруг кому-то понадобится.
Код
dbFileName = "Db.accdb"
dbTableName = "Выгрузка"
dbPath = ActiveWorkbook.Path
dbFullName = dbPath & "\" & dbFileName
ConnectionName = "Подключение"
With ActiveWorkbook.Connections(ConnectionName)
With .ODBCConnection
.CommandText = "SELECT * FROM `" & dbFullName & "`." & dbTableName
.CommandType = xlCmdSql
.Connection = "ODBC;DSN=MS Access Database;DBQ=" & dbFullName & ";DefaultDir=" & dbPath & ";" & _
"DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"
End With
.Refresh
End With
А с созданием нового подключения и последующей заменой им старого в PT (мой предыдущий метод) есть проблема: поскольку подключения создаются новые, нужно старые удалять, но: - если удалять после создания, тогда система, видя что подключение с таким именем уже существует, добавляет в конце цифру, а программа заточена на удаление всех подключений, отличных от заданного имени... соответственно, имя с цифрой удаляется, что не приводит ни к чему хорошему; - если удалять до создания, тогда "летит" вся сводная таблица, которая теряет подключение и становится фотографией на листе, пока не будет создано подключение с тем именем, которое использовалось PT. В общем, вариант с обновлением по всем параметрам лучше.