Название: Переименовать модель сводной таблицы через VBA Отправлено: SCRIBE от 03-11-2016 11:47 Всем привет.
Задача переименовать модель сводной таблицы. Создание модели: Код: (Visual Basic) Dim rng As Range Set rng = Sheets(1).Range("A1:B2") ThisWorkbook.Connections.Add2 "mConn", "mDesc", "WORKSHEET;Книга1", rng, 7, True, False Узнать имя этой модели: Код: (Visual Basic) Dim mt As ModelTable Если вот так ее создать, на основании неименованного диапазона, получится имя "Диапазон", "Диапазон1" et cetera.Set mt = ActiveWorkbook.Model.ModelTables(1) MsgBox mt.Name Свойство Name объекта ModelTable к сожалению read-only. Т.е. создать ее надо уже с нормальным именем, именование диапазона ничего не дает. Буду благодарен за помощь. Название: Re: Переименовать модель сводной таблицы через VBA Отправлено: SCRIBE от 03-11-2016 13:23 Решено, дабы назвать модель как надо, нужно создавать ее не через простой диапазон (Range), а через именованную таблицу (ListObjects).
Пример: Код: (Visual Basic) Dim rTbl As ListObject, rng As Range Set rng = Sheets(1).Range("A1:B2") Set rTbl = ActiveSheet.ListObjects.Add(xlSrcRange, rRng, , xlYes) rTbl.Name = "my name" ActiveWorkbook.Connections.Add2 "Data", "ReportData", "WORKSHEET;Report", rTbl, 7, True, False Название: Re: Переименовать модель сводной таблицы через VBA Отправлено: Алексей++ от 04-11-2016 09:39 в экселе попробовал - тоже не нашёл, как книгу переименовать, кроме как SaveAs ))
Название: Re: Переименовать модель сводной таблицы через VBA Отправлено: SCRIBE от 04-11-2016 13:13 Ну для книги все не так просто, там имя происходит от реального физического файла, так что не сохранив как надо и открыв ее заново, ничего не получится ;)
Между прочим на модели пришлось забить, то что там можно сделать руками, автоматизировать не удалось, имеются ввиду вычисляемые поля :( П.С. Да, они есть и в простых сводных, но, посмотрим что у вас получится написав банальное "=СУММ(ПОЛЕ1)/СЧЕТЗ(ПОЛЕ2)", то то ;) Название: Re: Переименовать модель сводной таблицы через VBA Отправлено: Алексей++ от 04-11-2016 15:03 ..::SCRIBE::.., если речь про эксель, то всё, что можно сделать руками, можно и программно. Записывай макрос и анализируй
Название: Re: Переименовать модель сводной таблицы через VBA Отправлено: SCRIBE от 04-11-2016 17:53 А вот и нет :) Рекордер не пишет, то что делаешь в окне редактирования модели, это как дополнение (PowerPivot) к Экселю, хоть и родное, все же не поддерживется.
|