Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Переименовать модель сводной таблицы через VBA  (Прочитано 12850 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
..::SCRIBE::..
Помогающий

ua
Offline Offline
Пол: Мужской
не путайте банальность с ленью=)


« : 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
Set mt = ActiveWorkbook.Model.ModelTables(1)
MsgBox mt.Name
Если вот так ее создать, на основании неименованного диапазона, получится имя "Диапазон", "Диапазон1" et cetera.
Свойство Name объекта ModelTable к сожалению read-only.
Т.е. создать ее надо уже с нормальным именем, именование диапазона ничего не дает.
Буду благодарен за помощь.
Записан
..::SCRIBE::..
Помогающий

ua
Offline Offline
Пол: Мужской
не путайте банальность с ленью=)


« Ответ #1 : 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
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 04-11-2016 09:39 » 

в экселе попробовал - тоже не нашёл, как книгу переименовать, кроме как SaveAs ))
Записан

..::SCRIBE::..
Помогающий

ua
Offline Offline
Пол: Мужской
не путайте банальность с ленью=)


« Ответ #3 : 04-11-2016 13:13 » 

Ну для книги все не так просто, там имя происходит от реального физического файла, так что не сохранив как надо и открыв ее заново, ничего не получится  Ага

Между прочим на модели пришлось забить, то что там можно сделать руками, автоматизировать не удалось, имеются ввиду вычисляемые поля  Жаль

П.С. Да, они есть и в простых сводных, но, посмотрим что у вас получится написав банальное "=СУММ(ПОЛЕ1)/СЧЕТЗ(ПОЛЕ2)", то то  Ага
« Последнее редактирование: 04-11-2016 13:16 от ..::SCRIBE::.. » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 04-11-2016 15:03 » 

..::SCRIBE::.., если речь про эксель, то всё, что можно сделать руками, можно и программно. Записывай макрос и анализируй
Записан

..::SCRIBE::..
Помогающий

ua
Offline Offline
Пол: Мужской
не путайте банальность с ленью=)


« Ответ #5 : 04-11-2016 17:53 » new

А вот и нет Улыбаюсь Рекордер не пишет, то что делаешь в окне редактирования модели, это как дополнение (PowerPivot) к Экселю, хоть и родное, все же не поддерживется.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines