gpt4 book ai didi

vba - 当 SmartArt 位于占位符内时访问 SmartArt 形状 (PowerPoint 2007)

转载 作者:行者123 更新时间:2023-12-04 06:47:22 29 4
gpt4 key购买 nike

我需要浏览 PowerPoint 2007 中智能艺术的每种形状。
shape.Type=msoSmartArt然后我可以简单地浏览 shape.GroupItems 中的形状。

然而,当 shape.Type == msoPlaceholder && shape.PlaceholderFormat.ContainedType==msoSmartArt然后 shape.GroupItems是空的。在这种情况下如何访问 Smart Art 形状?

我曾经认为 VBA 和 C# VSTO 基本相同。

好吧-这里有区别。我在实际的 VBA 中尝试了 Otaku 的代码,它似乎确实有效(抱歉,Otaku 混淆了)。

但是,我的程序在 C# VSTO 中,并且:

foreach (Shape slideShape in pres.Slides[1].Shapes)
{
if (slideShape.Type != MsoShapeType.msoSmartArt && !(slideShape.Type == MsoShapeType.msoPlaceholder && slideShape.PlaceholderFormat.ContainedType==MsoShapeType.msoSmartArt))
continue;

GroupShapes shapes=slideShape.GroupItems;
Debug.WriteLine(shapes.Count);
}

是否生产: shapes.Count=0 (当形状类型为占位符,包含类型为 SmartArt 时)。

有任何想法吗?

最佳答案

使用GroupShapes , 像:

Sub GetSAfromPlaceholder()
Dim ap As Presentation: Set ap = ActivePresentation
Dim sl As Slide: Set sl = ap.Slides(2)
Dim sh As Shape: Set sh = sl.Shapes(2)
Dim gsh As GroupShapes: Set gsh = sh.GroupItems
If sh.Type = msoPlaceholder Then
If sh.PlaceholderFormat.ContainedType = msoSmartArt Then
Debug.Print "SmartArt Shape Count: " & gsh.Count
For i = 1 To gsh.Count
If gsh(i).TextFrame.HasText Then
Debug.Print gsh(i).TextFrame.TextRange.Text
End If
Next
End If
End If
End Sub

关于vba - 当 SmartArt 位于占位符内时访问 SmartArt 形状 (PowerPoint 2007),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3557886/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com