Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2012, 00:58   #11
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Вот так работает:

Код:
Sub RngToJPG()
    Dim rng As Range, oChart As ChartObject, ppApp
    On Error Resume Next
    
    Set ppApp = CreateObject("PowerPoint.Application")

    Application.DisplayAlerts = False: Application.ScreenUpdating = False
    Range("A1:D10").CopyPicture

    Set x = ppApp.Presentations.Add
    Set y = x.Slides.Add(1, ppLayoutBlank)
    y.Shapes.Paste
    x.SaveAs Filename:="D:\123.jpg", FileFormat:=ppSaveAsJPG, EmbedTrueTypeFonts:=msoFalse
    x.Close
    ppApp.Quit

    Application.DisplayAlerts = True: Application.ScreenUpdating = True
End Sub
Если заменить константы значениями - то будет работать и без раннего связывания.

Проблемы:
1) создаётся не файл 123.jpg, а папка 123, содержащая картинки слайдов
2) картинки надо подгонять под размер слайда (или наоборот, не знаю как правильно), иначе на выходе совсем не то что надо

Ваш код не работал, так как надо было запускать приложение ДО помещения картинки в буфер обмена.
EducatedFool вне форума Ответить с цитированием
Старый 25.06.2012, 01:29   #12
ikki_pf
Форумчанин
 
Регистрация: 25.02.2012
Сообщений: 166
По умолчанию

мой код из поста #6 работал, создавал папку и картинки со слайдами.
но это не то.
нужна отдельная картинка для отдельного шейпа.

через интерфейс PP - можно сохранить.
через VBA - нельзя.

Последний раз редактировалось ikki_pf; 25.06.2012 в 01:32.
ikki_pf вне форума Ответить с цитированием
Старый 25.06.2012, 01:42   #13
ikki_pf
Форумчанин
 
Регистрация: 25.02.2012
Сообщений: 166
По умолчанию

добавлю (на всякий случай).

макрорекодер - штука безусловно хорошая и полезная.
сам постоянно пользуюсь, даже в знакомом приложении (Excel).
но иногда глючит.

еще раз.
вот то, что записал макрорекодер при сохранении отдельного шейпа через интерфейс PP:
Код:
Sub Макрос1()
  ActiveWindow.View.Paste
  ActiveWindow.Selection.Unselect
  ActiveWindow.Selection.SlideRange.Shapes("Picture 5").Select
  ActivePresentation.SaveAs FileName:="D:\Рисунок1.jpg", FileFormat:=ppSaveAsJPG, EmbedTrueTypeFonts:=msoFalse
End Sub
(в буфере обмена имеется картинка)
результат - создан файл D:\Рисунок1.jpg, представлящий собой именно картинку шейпа, а не слайда.

делаем наоборот - копируем картинку в буфер, запускаем чистый PP, создаем макрос в новом модуле
Код:
Sub Макрос1()
  ActiveWindow.View.Paste
  ActiveWindow.Selection.Unselect
  With ActiveWindow.Selection.SlideRange
    .Shapes(.Shapes.Count).Select
  End With
  ActivePresentation.SaveAs FileName:="D:\Рисунок1.jpg", FileFormat:=ppSaveAsJPG, EmbedTrueTypeFonts:=msoFalse
End Sub
(макрос чуть подправлен, но не суть)
возвращаемся в PP и запускаем этот макрос.

результат - создается папка D:\Рисунок1, в которой находится один рисунок Слайд1.jpg, представлящий картинку целого слайда.


пс. я, конечно, не профессионал, а любитель. поэтому и спрашиваю совета.
но совет, повторяющий мои "достижения" - это, согласитесь, немного не то, что нужно

Последний раз редактировалось ikki_pf; 25.06.2012 в 01:46.
ikki_pf вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Редактирование и сохранение excel из dbgrid Q012 БД в Delphi 5 22.08.2012 21:24
Сохранение StringGrid в Excel kta87 Общие вопросы Delphi 1 20.02.2012 06:10
Сохранение массива в excel файл ikostalker Общие вопросы Delphi 2 15.06.2010 11:01
Delphi Excel (сохранение записи в Excel) Кас Алина Общие вопросы Delphi 4 28.05.2010 09:17
Корректное сохранение в Excel artemavd БД в Delphi 1 19.07.2009 20:57