Экспорт данных из excell в power point
Модератор: Naeel Maqsudov
Спасибо за ответ. Но у меня он почему-то не работает. Я так понимаю, что здесь Set Gr = Application.ActivePresentation.Slides(2)._ не должно быть точки и линии. Или я не прав? В любом случае макрос стопорится на третьей строке Shapes(2). Может я что-то не так понял?
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
Таки как раз наоборот нужны, ибо символ подчёркивания - есть знак интерпретатору, что следующая строка - продолжение предыдущей
если без него то так
если без него то так
Код: Выделить всё
Set Gr = Application.ActivePresentation.Slides(2).Shapes(2).OLEFormat.Object

Я, что называется, пошел другим более простым путем. Случайно обнаружил такую штуку в PP как "связи". Она работает только в том случае если в экселе скопированы данные, а в PP открыт график и курсор стоит на "таблице данных". В таком случае график автоматически связывается с местом "X" в экселевском файле "X" находящемся по адресу "X".
Переполненный радостью я начал вставлять эти самые связи. Но вскоре понял, что не все так гладко. Дело вот в чем. Эту PP презентацию необходимо обновлять допустим каждую неделю. Причем, прыдыдущие версии презентации (за прошлые недели) должны сохраняться.
Вот тут и возникает новая задачка. Файл "X" менять нельзя, так как в графиках прошлых презентаций также изменятся цифирки. И т.д. и т.п.
К тому же, мне необходимо эту презентацию рассылать другим людям и тогда начнется полная свистопляска со связями.
Самый лучший вариант, - после того как презентация обновилась - сделать ее копию (для следующих недель), а затем удалить из нее связи ("разорвать связь").
Но это опять же придется залезать в каждый график. Конечно, работы намного меньше, но все-таки хочется и ее избежать.
Вопрос вот в чем: можно ли автоматически одним ударом разорвать связи у всех графиков презентации.
Да, и еще, спасибо за помошь. Она хоть на прямую и не помогла, но выход все-таки был найден.
Переполненный радостью я начал вставлять эти самые связи. Но вскоре понял, что не все так гладко. Дело вот в чем. Эту PP презентацию необходимо обновлять допустим каждую неделю. Причем, прыдыдущие версии презентации (за прошлые недели) должны сохраняться.
Вот тут и возникает новая задачка. Файл "X" менять нельзя, так как в графиках прошлых презентаций также изменятся цифирки. И т.д. и т.п.
К тому же, мне необходимо эту презентацию рассылать другим людям и тогда начнется полная свистопляска со связями.
Самый лучший вариант, - после того как презентация обновилась - сделать ее копию (для следующих недель), а затем удалить из нее связи ("разорвать связь").
Но это опять же придется залезать в каждый график. Конечно, работы намного меньше, но все-таки хочется и ее избежать.
Вопрос вот в чем: можно ли автоматически одним ударом разорвать связи у всех графиков презентации.
Да, и еще, спасибо за помошь. Она хоть на прямую и не помогла, но выход все-таки был найден.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Да, тип обновления можно легко поменять
Application.ActivePresentation.Slides(4).Shapes(2).LinkFormat.AutoUpdate = ppUpdateOptionManual
Надо только пробежать ся по всем шейпам у которых .Type = msoLinkedOLEObject
А вот как Средствами VBA разорвать связь совсем я пока не нашел
Application.ActivePresentation.Slides(4).Shapes(2).LinkFormat.AutoUpdate = ppUpdateOptionManual
Надо только пробежать ся по всем шейпам у которых .Type = msoLinkedOLEObject
А вот как Средствами VBA разорвать связь совсем я пока не нашел

- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
И ведь вот что обидно. В библиотеке WORD у класса LinkFormat есть метод BreakLink, а в библиотеке POWERPOINT у одноименного класса нет такого метода и все тут. Пробовал делать вызов используя нетипизированный объект (т.е. с поиском метода по имени).... Бесполезно: "Объект не поддерживает данное свойство или метод"....
Тут есть решение, так как в PP в Правка/Связи есть кнопка "Разорвать связь". Но как это сделано, черт возьми! :-E
Тут есть решение, так как в PP в Правка/Связи есть кнопка "Разорвать связь". Но как это сделано, черт возьми! :-E
Все таки есть выход. Но корявый.
Исходная ситуация: В папке "А" у нас лежит файл excell со всеми необходимыми макросами, в той же папке лежит шаблон презентации PP, графики которой ссылаются на этот экселевский файл. Нам необходимо обновлять данные каждый месяц. Соответственно у нас есть папки Март, Апрель и т.д. Итак, сейчас март. Мы берем из папки "А" файл PP копируем и вставляем его в папку "Март". В папке "А" запускаем в екселе макрос, соответственно мартовская презентация автоматически обновляется.
Далее самое интересное. Закрываем экселевский файл. Вырезаем его (именно вырезаем) и всталяем в папку "Март". Открываем экселевский и pp файлы в папке "Март", проходимся по всем графикам (открываем их). Связи автоматически изменяются. Закрываем все.
В папке март копируем экселевский файл и вставляем в папку "А"
Для следующих месяцев делаем точно также.
Теперь, у нас каждая помесячная презентация имеет связи со своим экселевским файлом. И ничего разрывать не надо
Надеюсь все понятно объяснил.
Исходная ситуация: В папке "А" у нас лежит файл excell со всеми необходимыми макросами, в той же папке лежит шаблон презентации PP, графики которой ссылаются на этот экселевский файл. Нам необходимо обновлять данные каждый месяц. Соответственно у нас есть папки Март, Апрель и т.д. Итак, сейчас март. Мы берем из папки "А" файл PP копируем и вставляем его в папку "Март". В папке "А" запускаем в екселе макрос, соответственно мартовская презентация автоматически обновляется.
Далее самое интересное. Закрываем экселевский файл. Вырезаем его (именно вырезаем) и всталяем в папку "Март". Открываем экселевский и pp файлы в папке "Март", проходимся по всем графикам (открываем их). Связи автоматически изменяются. Закрываем все.
В папке март копируем экселевский файл и вставляем в папку "А"
Для следующих месяцев делаем точно также.
Теперь, у нас каждая помесячная презентация имеет связи со своим экселевским файлом. И ничего разрывать не надо
Надеюсь все понятно объяснил.