Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос создания сводной таблицы - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Макрос создания сводной таблицы
Nat Дата: Пятница, 30.08.2013, 17:03 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте! Записала макрос (не то, чтобы сама написала, просто поставила на запись и выполнила стандартные действия). Но вот хочется немного "усовершенствовать", а как - не знаю.
Изначально программа выдавала ошибку со ссылкой на выдержку ниже. Как я поняла, причина была в том,что в новом документе не было Листа1. Поэтому каждый раз перед запуском макроса я вручную переименовываю свободный лист - и все работает.

[vba]
Код
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Итог!R1C1:R100000C36", Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="Лист1!R3C1", TableName:="Сводная таблица1", _
DefaultVersion:=xlPivotTableVersion14
[/vba]

Как уйти от ручных действий? Что надо прописать, чтобы каждый раз сводная таблица создавалась на новом листе? Два файла (один с макросом, а другой - для тренировки) приложены.

[admin]Оформляйте коды тегами, во избежание бана![/admin]
К сообщению приложен файл: VB.xlsm (47.4 Kb) · 3890359.xlsx (27.0 Kb)
 
Ответить
СообщениеЗдравствуйте! Записала макрос (не то, чтобы сама написала, просто поставила на запись и выполнила стандартные действия). Но вот хочется немного "усовершенствовать", а как - не знаю.
Изначально программа выдавала ошибку со ссылкой на выдержку ниже. Как я поняла, причина была в том,что в новом документе не было Листа1. Поэтому каждый раз перед запуском макроса я вручную переименовываю свободный лист - и все работает.

[vba]
Код
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Итог!R1C1:R100000C36", Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="Лист1!R3C1", TableName:="Сводная таблица1", _
DefaultVersion:=xlPivotTableVersion14
[/vba]

Как уйти от ручных действий? Что надо прописать, чтобы каждый раз сводная таблица создавалась на новом листе? Два файла (один с макросом, а другой - для тренировки) приложены.

[admin]Оформляйте коды тегами, во избежание бана![/admin]

Автор - Nat
Дата добавления - 30.08.2013 в 17:03
tsap Дата: Пятница, 30.08.2013, 23:55 | Сообщение № 2
Группа: Проверенные
Ранг: Участник
Сообщений: 60
Репутация: 6 ±
Замечаний: 0% ±

2013
Nat, попробуйте автоматом создавать лист и на нем уже размещать сводную таблицу. Что-то наподобие:
[vba]
Код

Sheets.Add.Name = "Total"
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _    
"Итог!R1C1:R100000C36", Version:=xlPivotTableVersion14).CreatePivotTable _    
TableDestination:="Total!R3C1", TableName:="Сводная таблица1", _    
DefaultVersion:=xlPivotTableVersion14    
[/vba]




Сообщение отредактировал tsap - Пятница, 30.08.2013, 23:59
 
Ответить
СообщениеNat, попробуйте автоматом создавать лист и на нем уже размещать сводную таблицу. Что-то наподобие:
[vba]
Код

Sheets.Add.Name = "Total"
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _    
"Итог!R1C1:R100000C36", Version:=xlPivotTableVersion14).CreatePivotTable _    
TableDestination:="Total!R3C1", TableName:="Сводная таблица1", _    
DefaultVersion:=xlPivotTableVersion14    
[/vba]

Автор - tsap
Дата добавления - 30.08.2013 в 23:55
KuklP Дата: Понедельник, 02.09.2013, 07:07 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
И на втором листе получите ошибку. Нельзя создать 2 листа с одинаковым именем. Как вариант, не называть лист, пусть Экс сам ему присвоит имя. Или привязываться ко времени. И лучше явно указывать:
worksheets.add


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеИ на втором листе получите ошибку. Нельзя создать 2 листа с одинаковым именем. Как вариант, не называть лист, пусть Экс сам ему присвоит имя. Или привязываться ко времени. И лучше явно указывать:
worksheets.add

Автор - KuklP
Дата добавления - 02.09.2013 в 07:07
SergeyKorotun Дата: Понедельник, 02.09.2013, 11:14 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 15 ±
Замечаний: 0% ±

Excel 2007
Создать какой то лист, например SheetsNumber и например в ячейку A1 поместить имя листа сводной таблицы (например pt) а в B1 - 1.
Перед созданием сводной таблицы Лист1 переименовать на SheetsNumber!A1 & SheetsNumber!B1 (получите имя листа "pt1") и значение B1 увеличьте на 1: SheetsNumber!B1.Value=SheetsNumber!B1.Value+1
В следующий раз Лист1 переименуется на pt2, потом на pt3 ...
 
Ответить
СообщениеСоздать какой то лист, например SheetsNumber и например в ячейку A1 поместить имя листа сводной таблицы (например pt) а в B1 - 1.
Перед созданием сводной таблицы Лист1 переименовать на SheetsNumber!A1 & SheetsNumber!B1 (получите имя листа "pt1") и значение B1 увеличьте на 1: SheetsNumber!B1.Value=SheetsNumber!B1.Value+1
В следующий раз Лист1 переименуется на pt2, потом на pt3 ...

Автор - SergeyKorotun
Дата добавления - 02.09.2013 в 11:14
Nat Дата: Понедельник, 02.09.2013, 12:41 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо всем за помощь! Последовала совету tsap - никаких ошибок программа не выдала, все работает :)
 
Ответить
СообщениеСпасибо всем за помощь! Последовала совету tsap - никаких ошибок программа не выдала, все работает :)

Автор - Nat
Дата добавления - 02.09.2013 в 12:41
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!