Мне нужно создать таблицы поворота xlPivotTableVersion10 (совместимый с Excel 2003) с помощью макроса, который я запускаю на своем компьютере с Excel 2007 на нем. Я запускаю макрос из исходного файла. У меня есть другой файл (WkbVar), который является .xls и открыт в [совместимом режиме], в котором я хочу создать несколько сводных таблиц. Мне удалось создать подключение к моей базе данных внешнего доступа (DOH Location inventory V6), из которой я получаю свой источник данных, а также сводный кеш (pc) с этим соединением.VBA создайте сводную таблицу версии 10 в файле xls через Excel 2007
кэшSet pc = WkbVar.PivotCaches.Create(SourceType:=xlExternal,
SourceData:=WkbVar.Connections("DOH Location inventory V6") _
, Version:=xlPivotTableVersion10)
With pc
.CreatePivotTable TableDestination:=WksAlertesVar.Range("A9"),TableName:="PivotTable_0", _
DefaultVersion:=xlPivotTableVersion10
End With
Стержень, кажется, создано очень хорошо, но затем я получаю тип 1004 «приложение определяется объектно-определения» ошибка в».CreatePivotTable [...] DefaultVersion: = xlPivotTableVersion10" линии.
Я попробовал пару вариантов и вот повторение того, что я получаю:
стержень кэш Версия: = xlPivotTableversion10 + сводной таблицы DefaultVersion: = xlPivotTableversion10 => 1004 ошибка
стержень кэш Версия: = xlPivotTableversion10 + сводной таблицы DefaultVersion: = xlPivotTableversion12 => 1004 Ошибка
стержень кэш Версия: = xlPivotTableversion12 + сводной таблицы DefaultVersion: = xlPivotTableversion10 => 5 ошибка "недопустимый вызов процедуры"
стержень кэш Версия: = xlPivotTableversion12 + сводной таблицы DefaultVersion: = xlPivotTableversion12 => работает нормально, но создает сводную таблицу Excel 2007, которая несовместима для фильтров и обновляется в файлах xls.
Если я остановить макрос после создания моего соединения и создать сводную таблицу вручную еще в [Режиме совместимости], он работает по желанию: я получаю сводную таблицу Excel 2003. Что заставляет меня думать, что то, что я пытаюсь сделать, возможно, я просто не могу правильно его кодировать ...
Если у кого-либо есть подсказка о том, как создавать сводные таблицы Excel 2003 в файлах xls, но через Excel 2007 и VBA, я был бы очень признателен за обмен знаниями.
С уважением, J.
-------------- редактировать (следующий комментарий картер в)
Действительно, кажется, проблема с использованием внешнего источника для моя сводная таблица. После того, как немного больше поисков и испытаний, я придумал следующие работы вокруг:
With ActiveWorkbook.PivotCaches.Create(SourceType:=xlExternal, Version:=xlPivotTableVersion10)
.Connection = Array()'HERE GOES ALL THE DATA RELATIVE TO MY CONNECTION TO THE ACCESS DATABASE
.CommandType = xlCmdTable
.CommandText = Array(_ 'here is the SQL string to select some data from a specific table I have in my Access database
"SELECT *" & Chr(13) & "" & Chr(10) & "FROM [DOH historique avec libelles] WHERE [DOH historique avec libelles]![Numero Site Gestionnaire] = " & NoSite _
)
.MaintainConnection = False
.CreatePivotTable TableDestination:=ActiveWorksheet.Range("A9"), TableName:="PivotTable_0", DefaultVersion:=xlPivotTableVersion10
End With
когда, прежде чем я бы первым добавить соединение с просто «данных относительно моей связи ...» информации и нет. Параметры CommandType, .CommandText и т. Д.
Я не очень хорошо знаком с параметрами соединений, но я думаю, что этот трюк имеет какое-то отношение к проблеме внешнего источника, выделенной Картером.
Спасибо, что нашли время, чтобы изучить мой вопрос. Я отредактировал свой вопрос, чтобы сообщить о некоторых изменениях, которые я внес в свой первоначальный код, чтобы решить эту проблему, и я думаю, что это действительно может быть связано с проблемой внутреннего/внешнего источника, о которой вы упоминаете. – user1997216