C # VSTO-PowerPoint Копирование / вставка слайдов с исходным форматированием - PullRequest
1 голос
/ 22 марта 2012

Быстрый вопрос, надеюсь, кто-то может помочь здесь. Я пытаюсь скопировать и вставить слайды из одной презентации PowerPoint в другую. В настоящее время он у меня есть, так что он будет копировать и вставлять все количество слайдов в правильное, но моя проблема в том, что он только снова и снова вставляет последний слайд презентации. Я пробовал оба цикла for / foreach, и все же это просто дать мне один слайд, мне интересно, если это не CommandBars. Но я вижу, что они используются для сброса слайдов в цикле for / foreach. Есть идеи?

    public void AppendPPTX(string newContent)
    {
        int sourceSlideRange = 0;
        int targetSlideRange = Application.ActiveWindow.Presentation.Slides.Count;
        PowerPoint.Presentation target;
        PowerPoint.Presentation source;

        try
        {
            target = Application.ActivePresentation;
            source = Application.Presentations.Open(newContent, Office.MsoTriState.msoFalse, Office.MsoTriState.msoFalse, Office.MsoTriState.msoFalse);

            sourceSlideRange = source.Slides.Count + 1; //otherwise I was just getting the second to the last slide

            for (int i = 1; i < sourceSlideRange; i++)
            {
                source.Slides[i].Copy();
                target.Slides[targetSlideRange].Select();
                target.Application.CommandBars.ExecuteMso("PasteSourceFormatting");
            }
            source.Close();
        }
        catch (Exception)
        {
            MessageBox.Show("Error opening PowerPoint, corruption found inside the powerpoint file. " +
                            Environment.NewLine + "The corrupted file has been deleted." + Environment.NewLine +
                            "Please attempt to redownload file.",
                            "Error Opening PowerPoint",
                            MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

    }

Ответы [ 2 ]

2 голосов
/ 23 марта 2012

Попробуйте сохранить ваш PPT после PasteSourceFormatting.У меня была такая же проблема.

1 голос
/ 22 июня 2012

Я использовал Application.DoEvents() после PasteSourceFormatting, и он работал нормально!

...