public static PowerPoint.Presentation GetActivePPT(this PowerPoint.Application application)
{
try
{
if (App.Presentations.Count > 0)
{
return application.ActivePresentation;
}
else
{
return null;
}
}
catch (Exception ex)
{
return null;
}
}我这样称呼这个函数:
PowerPoint.Presentation ppPresentation = PowerPointApplication.GetActivePPT();
if(ppPresentation != null)
{
Console.WriteLine(ppPresentation.Name);
}我得到了一个:
COMException:消息:表示(未知成员):无效请求。不授予自动化权限。Microsoft.Office.Interop.PowerPoint._Presentation.get_Name():StackTrace
下面是我所知道的Presentations.Count是一个,而application.ActivePresentation不是空的
似乎我不是唯一一个在Explorer预览中遇到此问题的人:
听起来这是权限问题吗?希望它就像设置一些东西给COMVisible(真)一样简单,但目前还没有好的想法。
这篇博客文章似乎声称写锁在起作用,但是Word和Excel没有表现出相同的行为。
发布于 2016-09-09 13:33:09
当您在Windows Explorer中选择启用预览窗格的演示文稿时,Windows Explorer将在隐藏窗口中打开该演示文稿。如果您试图从COM外接程序中访问任何隐藏的演示文稿的对象成员(例如ppPresentation.Name),您将获得“不授予自动化权限”。异常。
不幸的是,似乎没有一种很好的方法来确定隐藏的演示文稿是否是由Windows (例如,ppPresentation.Windows.Count = 0)打开的,因为通过代码访问任何演示文稿的对象成员似乎都会引发此异常。因此,唯一的解决办法似乎是错误处理,如Try/Catch。
请注意,Presentations.Count返回所有打开演示文稿的数量,包括预览窗格打开的演示文稿数,因此,如果您的外接程序依赖于它实际可以处理的演示文稿的准确计数,则需要对此进行说明。
另外,请注意,此问题似乎不会以同样的方式影响Excel。
https://stackoverflow.com/questions/38601251
复制相似问题