Как скопировать определенные слайды одной презентации PowerPoint в другую? - PullRequest
0 голосов
/ 25 сентября 2018

Ниже приведен код, с помощью которого я пытаюсь скопировать определенные слайды одной презентации в другую, но этого не происходит, и при этом я получаю сообщение об ошибке.

source = ppt.Presentations.Open(filename, MsoTriState.msoTrue, 
MsoTriState.msoTrue, MsoTriState.msoTrue);

target = ppt.Presentations.Open(targetname, MsoTriState.msoTrue, 
MsoTriState.msoTrue, MsoTriState.msoTrue);

sourceSlideRange = source.Slides.Count;

for (int i = 3; i < sourceSlideRange; i++)
{
source.Slides[i].Copy();
target.Windows[1].Activate();
target.Slides[1].Select();

target.Application.CommandBars.ExecuteMso("PasteSourceFormatting");
}

Что не так в моем коде?Пожалуйста, предложите. Спасибо

1 Ответ

0 голосов
/ 25 сентября 2018

Поскольку мое требование состояло в том, чтобы хранить только определенные слайды в презентации, а мой опубликованный код для копирования не работал, поэтому я попытался удалить ненужные слайды из презентации, сохранив только те, которые мне были нужны.Ниже приведен код, который решил цель

Microsoft.Office.Interop.PowerPoint.Application ppt = new Microsoft.Office.Interop.PowerPoint.Application();
ppt.Visible = MsoTriState.msoTrue;
ppt.WindowState = Microsoft.Office.Interop.PowerPoint.PpWindowState.ppWindowMinimized;

source = ppt.Presentations.Open(filename);

target = ppt.Presentations.Open(targetname, MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoTrue);

sourceSlideRange = source.Slides.Count;

for (int i = 3; i < sourceSlideRange; i++)
    {
      source.Slides[i].Delete();
      source.Save();

    }

source.Close();
...