[image]

Вопросы по PowerPoint'у

 

Darth

опытный

Всем привет!

Кто-нибудь пробовал считать в PowerPoint'e? :) Не шутка. Есть большой объём числовых данных, каждое ["данное"] из которых записано в строго отведённом ему объекте типа "Надпись" (TextBox, по его терминологии). Требуется выполнить вычисления и ввести результаты в другие объекты типа "надпись" :) Всего делов-то...

Первая мысль: макрос. Объектная модель Ppt'шного VBA выяснилась весьма просто с помощью опции "Записать макрос" :) (ну как всегда). НО! Непонятно, как выяснить идентификатор конкретного объекта! (конкретной надписи) У неё ж в доступных свойствах такого рядом нет. Единственное решение: опять-таки пользуясь "Записать макрос", ввести какие-то значения во все интересующие объекты (запомнив последовательность ввода), посмотреть сформированный код, а потом распечатать слайд и подписать каждый элемент. Но это ж того... Тупо! :) Не наш метод, короче.

А ещё идеи есть?

ЗЫ: Предвосхищая возможный ответ — нет, В Excel'е нельзя! :) Сейчас считаем там, а потом копируем ручками в Ppt.
   
Это сообщение редактировалось 24.07.2008 в 10:55
Идентификатор это индекс в коллекции объектов, в данном случае в коллекции Shapes.
Вот такой код заменит текст в надписи индексом надписи в коллекции.
ActivePresentation.Slides(1).Shapes(i).TextFrame.TextRange.Text = i
   

Darth

опытный

Хе-хе :) (см. картинку)

Но эт фигня — за ИДЕЮ спасибо большое! Я вот не сообразил :)
Прикреплённые файлы:
PPT VBA Shapes Err.JPG (скачать) [371x208, 13,5 кБ]
 
 
   
Ну так это только пример. Впрочем, у них есть и имена человеческие:
Имя фигуры=ActivePresentation.Slides(1).Shapes(Индекс).Name
Соответственно доступ по имени будет:
ActivePresentation.Slides(1).Shapes(Имя фигуры)
   

Darth

опытный

Точно, и потом так определить, у каких видов Shapе'ов есть TextRange.TextFrame. Опять спасибо! :)
   

Darth

опытный

Ещё вопросы по этой дураццкой проге до кучи:

1. Есть отформатированная заготовка таблицы в Ppt. Есть таблица такой же структуры в Excel'е. Нужно вставить данные из одной в другую (ну понятно, из какой куда :)). Копируем в буфер таблицу Excel'я, выделяем требуемый диапазон ячеек таблицы Ppt, вставляем через специальную вставку (Alt+П+Е, "Неформатированный текст") и... о чудо!.. данные вставляются с каким-то УЖАСНО КРИВЫМ форматированием! (конкретно в моём случае: Arial, 28, по левому краю вместо Times, 10, Bold, по центру). Попытка вставки только в верхнюю левую ячейку целевой таблицы (без выделения других) приводит, как и ожидалось, к вставке ВСЕХ ДАННЫХ в эту самую ячейку, НО: с сохранением предыдущего форматирования (т.е. того, какое и надо).

Ну а простая вставка (Ctrl+V) тупо вставляет новую таблицу (как объект) в центр слайда.

Чё делать?!

2. Ещё про таблицы: а есть ли идеи, как там выделять несвязанные диапазоны ячеек? С Ctrl не работает.

ЗЫ: PowerPoint 2003. (Ну до чего кривой продукт! Такое впечатление, что его делали на коленке в качестве бесплатного прилложения к другим компонентам, но потом какой-то топменеджер МС'а решил и на нём подзаработать :))
   
Это сообщение редактировалось 24.07.2008 в 11:11

Darth

опытный

Я чумею! Изменение атрибутов одной ячейки Ppt'шной таблицы (ну там цвет заливки поменял) приводит к изменению... ВНИМАНИЕ!.. идентификатора всей таблицы! (до заливки она называлась Shapes("Group 942"), после — Shapes("Group 946")!)

Ну и как после этого под него проги писать?! Аццтой...
   
+
-
edit
 

john5r

аксакал
★★
поправка к законц Лорда Аштона:

Power corrupts. PowerPoint corrupts absolutely

СЗОФ
   

Darth

опытный

В самую точку! :) У меня от этой проги аж зубы болят — так скрежетал :)
   
А в чем такая важность делать все именно в поверпоинте (он и вправду г... редкое)?
   

Darth

опытный

Да вот самому интересно. Руководство поставило задачу. Пытался пробить Excel, наглядно доказал, что выглядеть будет совершенно так же (благо с Ёкселем уже лет 10 плотно работаю, знаю все подводные камни). Не помогло — подавай им ПоверПоинт.

Ну в принципе можно кое-как оправдать такое решение. Работать с презентацией (вбивать цифирки) потом будут юзеры разной, в том числе низкой, квалификации. ПП в этом плане проще. Например, в начале каждого месяца нужно будет удалять одну графу в таблице (данные предыдущего месяца присоединяются к графе "с начала года"). В ПП это просто: правой кнопкой, "Удалить столбец", растянуть таблицу. А как ентот юзверь будет делать то же самое в Ёкселе? :) Это ж целую инструкцию писать для него придётся...
   
А ворд? У него весьма неплоха работа с таблицами.
   

Darth

опытный

Нееее, в Ворде такую презентацию не сделаешь, тут он ещё хуже Экселя будет.
   
Я имею ввиду внутри поверпоинт презентации создать вордовский объект с таблицей.
   

Darth

опытный

Хм... Как-то такая мысль не приходила мне в голову... Попробую завтра :)
   
RU Клапауций #28.07.2008 11:02  @Darth#25.07.2008 21:33
+
-
edit
 

Клапауций

координатор
★★☆
Darth> Например, в начале каждого месяца нужно будет удалять одну графу в таблице (данные предыдущего месяца присоединяются к графе "с начала года"). В ПП это просто: правой кнопкой, "Удалить столбец", растянуть таблицу. А как ентот юзверь будет делать то же самое в Ёкселе? :)

Может я чего-то не понимаю, но в Экселе вроде бы точно так же?
Не говоря уже о том, что такие вещи можно встроить на VBA автоматом, типа при загрузке проверили - месяц сменился, она сама удалила графу...
   

Darth

опытный

Немного не так: в ПП таблицу можно растянуть тупо мышкой, а в Экселе придётся "хитро" объединять ячейки (т.к. если вы просто удалите столбец, то поедет правая граница).

Конечно, можно автоматизировать на VBA, но некогда. (Хотя, если вспомнить, сколько времени я убил на попытки вычислений в таблицах ПП... :) )
   

Darth

опытный

GOGI> Я имею ввиду внутри поверпоинт презентации создать вордовский объект с таблицей.

Попробовал с внедрёнными объектами. Не, не катит — никакого WYSIWIG'а. Вот это обычный юзер точно не осилит ("ниасилит", я б даже сказал :) ). Он же при выходе из режима редактирования превращает этот объект в картинку. Соответственно, масштабировать саму картинку нельзя — плывут размеры шрифта (в том числе соотношение сторон), толщина линий... Единственный выход — выполнять всё масштабирование, находясь в режиме редактирования. Но и тут при выходе из оного он через раз норовит изменить представление результата, как, по его мнению, лучше. А мнение у него "глупое" (с) Н.С. Хрущёв :)

Так что выход всё же один: запретить пользователю вносить изменения в таблицы вручную, обязать копировать таблицу целиком из Экселя (с последующим исправлением форматирования, ё-моё...).
   
+
-
edit
 

HolyBoy

аксакал

Простите, а как вообще все предполагается делать?
Это будет какая-то БД, которую будут пополнять несколько человек в одном месте или это должна быть форма, которую заполняют все-все?
Для первого случая я бы вам посоветовал не извращаться, а взять сервер БД и написать к нему веб-морду на пхп, можно даже готовую взять и подпилить. Легче будет нарисовать таблицу любой сложности и пользователь спокойно ее распечатает.
   

Darth

опытный

Не, это форма, "которую будут заполнять все-все" :), а потом один специально обученный человек будет складывать отдельные слайды в общий большой файл.

Выход, в принципе, найти удалось: заставлять пользователя после заполнения таблицы копировать её целиком в Ёксель и проверять итоги (на тему того, как это делается, с отдельными гражданами будет проведена разъяснительная работа :) )
   
+
-
edit
 

Kuznets

Клерк-старожил
★☆
ну вы даете. извращенцы :)
а пп и правда отстой как был так и остается. к сожалению.
никто кстати в 07 не смотрел как там оно - не стало получше? (хотя надеждыу меня особой нет).
   

Darth

опытный

А вот, кстати, нифига и не извращенцы :) Первый же опыт "промышленной эксплуатации" сей презенташки блестяще подтвердил все самые пессимистические предположения. Куча ошибок! Самая распространённая — внесение данных в тело таблицы без изменения итога по строке и столбцу. Забывают. И винить тут пользователя сложно: в таком темпе приходится работать, ведь всё надо быстрее, быстрее, ещё быстрее...

А мой макрос такое дело не пропускал. Надо было довести начатое до конца, благо там уже немного усилий-то осталось приложить. А теперь времени нет. Всё надо делать вовремя.
   

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru