Перевод кода PowerPoint VBA в Delphi, проблема «сохранить исходное форматирование» - PullRequest
4 голосов
/ 04 февраля 2012

Я работаю с Delphi (2010), но я новичок в PowerPoint (2010)

Я нашел два кода для копирования слайдов с "сохранить исходное форматирование":

Sub test1()
Dim orig_slide, new_slide As Slide
Dim slide_range As SlideRange

    Set orig_slide = ActivePresentation.Slides(2)
    orig_slide.Copy
    Set slide_range = ActivePresentation.Slides.Paste(6)
    Set new_slide = slide_range.Item(1)

    new_slide.Design = orig_slide.Design
    new_slide.ColorScheme = orig_slide.ColorScheme
End Sub

Sub test2()
    ActivePresentation.Slides(2).Select
    ActiveWindow.Selection.Copy
    ActiveWindow.View.PasteSpecial (DataType = ppPasteOLEObject)
End Sub

Они оба дают желаемые результаты в PowerPoint, но в Delphi я получаю исключения:

test1, строка

new_slide.Design = orig_slide.Design

класс исключений EOleSysError с сообщением «Элемент не найден»

test2, строка

ActiveWindow.View.PasteSpecial (DataType = ppPasteOLEObject)

класс исключений EOleException с сообщением 'View.PasteSpecial: неверный запрос.Указанный тип данных недоступен '

Я использую Slider Sorter View, копирование и вставка работают нормально, я только пытаюсь добавить команду "сохранить исходное форматирование".

Заранее спасибо

1 Ответ

1 голос
/ 06 февраля 2012

Я думаю, что нашел решение:

Этот код в Delphi (не работает)

var OrigSlide, NewSlide : Variant;
NewSlide.Design := OrigSlide.Design;

справа, Delphi, кажется, принимает только variable_variable, этоне принимает variable_variable.property

Кажется, что левая сторона работает противоположным образом?!?

Когда я заменил его на этот код, он работает

OrigSlide := OrigSlide.Design;
NewSlide.Design := OrigSlide;

НоЯ могу только догадываться почему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...