Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2013, 16:42   #1
KaSS
Пользователь
 
Аватар для KaSS
 
Регистрация: 30.07.2013
Сообщений: 46
По умолчанию Проблема со сводными.

Как правильно создавать сводные программно?

Я делаю так:

Код:
Dim PTCache As PivotCache
Dim PT As PivotTable
Set PTCache = ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=wsh1.UsedRange)

Set PT = wsh.PivotTables.Add( _
PivotCache:=PTCache, _
TableDestination:=wsh.Range("A3"))
.
.
.
Он то работает, то нет.
Валится на строке Set PTCach пишет ошибку
Run-time error '13'
Type mismatch

Может кто то мне объяснит в чем проблема?
Экспериментировала с SourceData поменяла UsedRange на Range(Cells(1,1), Cells(150,num_col)) так работает, когда меняю номер строки на >150 валится, как было описано выше.
Или посоветуйте другой способ для создания сводных или скажите где почитать.
perseverance overcomes all things
KaSS вне форума Ответить с цитированием
Старый 12.12.2013, 07:59   #2
KaSS
Пользователь
 
Аватар для KaSS
 
Регистрация: 30.07.2013
Сообщений: 46
По умолчанию

Что, неужели никто сводные программно не создает?(
perseverance overcomes all things
KaSS вне форума Ответить с цитированием
Старый 12.12.2013, 09:46   #3
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Вы сейчас много видели докторов, чтоб лечили по описанию? Все равно Вас пощупают, пошлют на анализы. Где пример? Тут должны по обрывку кода диагноз поставить и лечение назначить?
Навскидку - UsedRange штука ненадежная. Захватит даже те области, где когда то были данные и даже форматирование. И сводные в том числе.
Цитата:
Экспериментировала с SourceData поменяла UsedRange на Range(Cells(1,1), Cells(150,num_col)) так работает, когда меняю номер строки на >150 валится, как было описано выше.
А зачем огульно задавать номер строки? Научитесь правильно вычислять нужный диапазон. Как найти последние заполненные строку/столбец, на форуме примеров несть числа.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 12.12.2013, 09:57   #4
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Кросс:
http://www.planetaexcel.ru/forum/ind...IT&result=edit
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 13.12.2013, 17:28   #5
KaSS
Пользователь
 
Аватар для KaSS
 
Регистрация: 30.07.2013
Сообщений: 46
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
А зачем огульно задавать номер строки? Научитесь правильно вычислять нужный диапазон. Как найти последние заполненные строку/столбец, на форуме примеров несть числа.
А насчет данных, ну не могу я именно те данные дать, они конфиденциальны. А для данных "от балды" такое создание работает.

Потому что при вычислении последней заполненной строки(где-то 600) и валится ошибка. Вставила вручную 200 - валится, вставила 100 -не валится. Экспериментально получилось что валится начиная со 151 строки.

Конечно как ты сказал "кросс", если не здесь, ни там никто не отвечает. А отвечают не то что нужно.

Можете дать ссылку для ПРАВИЛЬНОГО создания сводных?
perseverance overcomes all things
KaSS вне форума Ответить с цитированием
Старый 13.12.2013, 17:55   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а сделать сводную вручную на 200 строк? работает?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 13.12.2013, 18:23   #7
KaSS
Пользователь
 
Аватар для KaSS
 
Регистрация: 30.07.2013
Сообщений: 46
По умолчанию

Да, работает.
Я пока вроде разобралась.
Установила SourceData=str_rg, где str_rg=name_sheet&"!C1R1:C"&num_row &"R"&num_col,
где num_row и num_col соответственно последние строка и столбец.
Надеюсь и дальше будет работать. А то бывает на одном компе работает, а на другом нет.

Код:
Dim PTCache As PivotCache
Dim PT As PivotTable
Dim str_rg As String
    
str_rg = str_table & "!R1C1:R" & num_row & "C" & num_col

Set PTCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
    SourceData:=str_rg, _
    Version:=xlPivotTableVersion14)
    Set PT = wsh.PivotTables.Add( _
                        PivotCache:=PTCache, TableDestination:=Workbooks(main_book).Sheets(str).Range("A3"))
perseverance overcomes all things
KaSS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неблокирующий сокет Си проблема с закрытием, проблема с закрытием сокетов в цикле mnx_vol C/C++ Сетевое программирование 0 06.11.2012 13:57
проблема со сводными таблицами. Undre2000 Microsoft Office Excel 1 07.09.2009 14:50
пОМОГИТЕ СПРАВИТСЯ СО СВОДНЫМИ ТАБЛИЦАМИ лузер81 Microsoft Office Excel 1 12.04.2009 12:04
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37