我有一个powerpoint幻灯片,其中存在一个嵌入式excel对象,它以下列方式嵌入:insert-object-create from file-browse-display as icon。 我正在尝试使用c#以编程方式打开此excel表。 我面临的问题是我收到错误: “未处理的异常:System.Runtime.InteropServices.COMException:OLEFormat(未知成员):无效的请求。窗口必须位于幻灯片或备注视图中。 在Microsoft.Office.Interop.PowerPoint.OLEFormat.Activate()“ 我尝试将viewtype更改为幻灯片,如下所示: 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;
}
}`
这是我正在使用的代码。 有谁可以帮我这个。 提前谢谢!
答案 0 :(得分:-1)
使用Office.Interop lib处理简洁的演示文稿时,它使工作变得简单。但是,当我们尝试访问和编辑演示文稿中的OLEObject时,它变得棘手。
尝试一下!:
PowerPoint.OLEFormat ole = shape.OLEFormat;
ole.Object.Activate();
Excel.Workbook workbook = ole.Object;
这将创建一个工作簿实例。 注意:OLEFormat.Object是动态类型,不需要类型转换对象。但是,是的,当类型转换失败时,您需要处理错误。
希望这会有所帮助。
谢谢。