Как открыть встроенный лист Excel в презентации Powerpoint с помощью C # - PullRequest
0 голосов
/ 09 мая 2018

У меня есть слайд PowerPoint, в котором присутствует встроенный объект Excel, который внедряется следующим образом: insert-object-create из file-browse-display в виде значка. Я пытаюсь открыть этот лист Excel программно с помощью C #. Проблема в том, что я получаю сообщение об ошибке: "Необработанное исключение: System.Runtime.InteropServices.COMException: OLEFormat (неизвестный член): недопустимый запрос. Окно должно быть в режиме просмотра слайдов или заметок. в Microsoft.Office.Interop.PowerPoint.OLEFormat.Activate () " Я попытался изменить тип просмотра на слайд следующим образом: presentation.Application.ActiveWindow.ViewType = PowerPoint.PpViewType.ppViewSlide; Но, похоже, это не помогает, и я получаю ту же ошибку.

`

Microsoft.Office.Interop.PowerPoint.Application PowerPoint_App = new Microsoft.Office.Interop.PowerPoint.Application();
                Microsoft.Office.Interop.PowerPoint.Presentations multi_presentations = PowerPoint_App.Presentations;
                Microsoft.Office.Interop.PowerPoint.Presentation presentation = multi_presentations.Open(@"D:\test.pptx");
foreach (var item in presentation.Slides[1].Shapes)
                    {
                        var shape = (PowerPoint.Shape)item;
if(shape.Name.Contains("Object")) {
 presentation.Application.ActiveWindow.ViewType = PowerPoint.PpViewType.ppViewSlide;
                presentation.Application.Activate();
                presentation.Application.ActiveWindow.Activate();
 shape.OLEFormat.Activate();
Microsoft.Office.Interop.Excel.Workbook wb = (Excel.Workbook)shape.OLEFormat.Object;
}
}`

Это код, который я использую. Может ли кто-нибудь, пожалуйста, помогите мне в этом. Заранее спасибо!

1 Ответ

0 голосов
/ 16 января 2019

Упрощает работу при работе с чистыми презентациями с использованием Office.Interop lib. Но становится сложнее, когда мы пытаемся получить доступ и редактировать OLEObjects в презентации.

Попробуйте это!:

PowerPoint.OLEFormat ole = shape.OLEFormat;
ole.Object.Activate();
Excel.Workbook workbook = ole.Object;

это создаст экземпляр книги. Примечание: OLEFormat.Object - это динамический тип, нет необходимости в типе, приводящем объект. но да, вам нужно обрабатывать Error при сбое приведения типа.

Надеюсь, это поможет.

Спасибо.

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