【问题标题】:PowerPoint vb.net reference current slidePowerPoint vb.net 参考当前幻灯片
【发布时间】:2018-06-29 00:51:54
【问题描述】:

在 VB .NET 中为 PowerPoint 编写插件以及我为插入各种形状类型而编写的任何行时,都会出现错误: "对非共享成员的引用需要对象引用"

我在 Google 上搜索过,所有建议都以

开头
Slide.Shapes.AddShape

虽然这给出了上面的错误,例如

NewBubble = Slide.Shapes.AddShape(MsoAutoShapeType.msoShapeOval, 20, 150 + (i * 10), cm2points(0.4), cm2points(0.4))

那么,我如何引用活动幻灯片以便我可以转到“.Shapes”或其他任何内容?

我在顶部设置了“导入 Microsoft.Office.Interop.PowerPoint”,并尝试了“PowerPoint.etc”和“Application.etc”,但似乎也不起作用。

【问题讨论】:

    标签: c# vb.net vsto powerpoint


    【解决方案1】:

    您是否尝试过使用:Globals.ThisAddIn.Application.ActiveWindow.View.Slide

    怎么样:Globals.ThisAddIn.Application.ActivePresentation.SlideShowWindow.View.Slide

    我认为您还可以处理Application.SlideSelectionChanged,然后将所选幻灯片作为SlideRange 传递给事件处理程序参数。

    【讨论】:

    • 华丽的伴侣 - 一线作品。谢谢!我尝试了各种变体,但没有得到所有的位:-)
    【解决方案2】:

    我这里说的是 VBA 而不是 VB.NET,但是翻译应该不会太难:

    在正常(即编辑)视图中,这将为您提供对当前幻灯片的引用:

    ActiveWindow.Selection.SlideRange(1)
    

    如果您在幻灯片放映视图中,则使用它来获取对当前幻灯片的引用:

    SlideShowWindows(1).View.Slide
    

    需要注意的是,如果正在进行多个幻灯片放映,则可能会有多个幻灯片放映窗口(很少见,但可能会发生)。为了安全起见,请先检查 SlideShowWindows.Count。

    【讨论】:

    • 这就是我开始的地方 - VBA 更简单,但翻译起来并不那么容易......(在其他尝试的解决方案中,我似乎找不到“ActiveWindow”的等价物)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多