Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Создание сводной таблицы


Автор: Lapochka 22.10.2008, 16:32
Есть следующая процедура.

Код

dim sh_vint as worksheet
dim sh_deb as worksheet

sub vintaj()
set sh_vint = worksheets("Vintage - возникновение")
set sh_deb = worksheets("Debtor")

' определяю границы таблицы, данные которой являются исходными для сводной
rows_deb = sh_deb.range("a1").CurrentRegion.Rows.Count
cols_deb = sh_deb.range("a1").CurrentRegion.Columns.Count
Deb_table = "Debtor!R1C1:R" + CStr(rows_deb) + "C" + CStr(cols_deb)

' определяю место вывода сводной таблицы (на самом деле там алгоритм, но для примера выберу конкретную ячейку)
row_t = 93
col_t = 2
place_table = "Vintage - возникновение!R" + CStr(row_t) + "C" + CStr(col_t)

ActiveWorkbook.PivotCaches.Create(SoureceType:=xlDatabase, SourceData:=Deb_table, _
                            Version:=xlPivotTableVersion12).CreatePivotTable _
                            TableDestination:=place_table, _
                            TableName:="Vintag_begin", DefaultVersion:=xlPivotTableVersion12

sh_vint.select
cells(row_t,col_t).select
activeWorkbook.ShowPivotTableFieldList = True

' и далее вывожу строки, столбцы и значения

end sub


Забивается на кэше. Выдают ошибку: "Invalid procedure call or argument!"

Я планирую эту процедурку сделать функцией, т.к. подобная вещь будет несколько раз делаться, только с немного разными параметрами.
Не хочется одно и то же писать по 150 раз.
Хелп ми. как исправить?  smile 

Автор: Akina 22.10.2008, 17:08
Цитата(Lapochka @  22.10.2008,  17:32 Найти цитируемый пост)
Забивается на кэше. Выдают ошибку: "Invalid procedure call or argument!"

А теперь, пожалуйста, укажите номер строки. ЦИФРОЙ.

Добавлено через 4 минуты и 14 секунд
PS. Если это строка 18 - то у вас там тривиальная опечатка. В имени первого параметра.

Автор: Lapochka 22.10.2008, 17:32
тьфу блин. заработалась. не на ту кнопку нажала, чтоб мессагу отправить.

в общем ошибка на 18 строке.
в коде написано правильно. просто у нас на раб компах нет доступа к инету приходится тут весь код вручную набирать.

пыталась сделать по-другому, как в книжке.
но он категорически отказывается создавать объект range

Автор: Akina 22.10.2008, 17:46
Поделите эту строку на две:
Код
dim pvc as PivotCache
Set pvc = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=Deb_table, Version:=xlPivotTableVersion12)
pvc.CreatePivotTable TableDestination:=place_table, TableName:="Vintag_begin", DefaultVersion:=xlPivotTableVersion12

Где будет ошибка?

Автор: Lapochka 23.10.2008, 08:42
возникла ошибка в 3 строке. 
указала в результате вместо place_table конечную ячейку sh_vint.cells(row_t,col_t)

Код

dim pvc as PivotCache
Set pvc = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=Deb_table, Version:=xlPivotTableVersion12)
pvc.CreatePivotTable TableDestination:=sh_vint.cells(row_t,col_t), TableName:="Vintag_begin", DefaultVersion:=xlPivotTableVersion12


в этом случае сработало!

также делала немного другим способом.
все равно если в параметре TableDestination выводить place_table , то не срабатывает.
нужно задать ему какой-то тип. попробовала несколько, ничего не получилось.
легче, наверное, сразу писать тогда ячейку.


и у меня еще 1 вопрос.
при создании сводной, указывается, что выводить в строках, столбцах и значениях.
есть такое свойство как pivotitems.

предположим в строках выводится по датам.
но мне нужны не все даты, а с определенного числа.
попыталась сделать параметр my_item, в цикле задавать ему значения и делать 
Код

PivotItems(my_item).visible = false

однако, если он начинается проходиться по тем данным, которых нет в итемах, выдается ошибка.
как мне получить список итемов?

Автор: Lapochka 24.10.2008, 08:18
 smile  в новый топик

Автор: mihanik 26.10.2008, 23:50
Модератор: 
Lapochka, а самой трудно создать новую тему рядом?
И зачем вызывать джина-модератора кнопкой репорта по таким мелочам?
Или я чего-то не понимаю, или одно из двух...

А тему пока прикрою...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)