1) 有一个powerpoint2003演示文稿。它包含唯一的幻灯片和唯一的形状,但形状包含一个文本框架,包括一个带有随机文本表示结构的项目符号列表。
2) 使用powerpoint2007,需要为每个项目符号段落获得项目符号缩进。我可以满足以兼容模式打开演示文稿并应用以下VBA脚本的要求:
With ActivePresentation
Dim sl As Slide: Set sl = .Slides(1)
Dim sh As Shape: Set sh = sl.Shapes(1)
Dim i As Integer
For i = 1 To sh.TextFrame.TextRange.Paragraphs.Count
Dim para As TextRange: Set para = sh.TextFrame.TextRange.Paragraphs(i, 1)
Debug.Print para.Text; para.indentLevel, sh.TextFrame.Ruler.Levels(para.indentLevel).FirstMargin
Next i
End With
A 1 0
B 1 0
C 2 24
D 3 60
E 5 132
显然,一切都是完美的:它显示了正确的列表项文本、列表项级别及其项目符号缩进。但是我不知道如何用C来达到同样的结果。让我们添加一个COM引用到Microsoft.Office.Interop摘自PowerPoint.2.0消息.OLB,MS Office 12):
// presentation = ...("presentation.ppt")... // a PowerPoint 2003 presentation
Slide slide = presentation.Slides[1];
Shape shape = slide.Shapes[1];
for (int i = 1; i<=shape.TextFrame.TextRange.Paragraphs(-1, -1).Count; i++) {
TextRange paragraph = shape.TextFrame.TextRange.Paragraphs(i, 1);
Console.WriteLine("{0} {1} {2}", paragraph.Text, paragraph.IndentLevel, shape.TextFrame.Ruler.Levels[paragraph.IndentLevel].FirstMargin);
}
哦,伙计。。。是什么?我这里有问题。首先
paragraph.Text
'\r'
找到字符(但是
paragraph.Text[0]
真的返回第一个字符O\u O)。但没关系,我可以对此视而不见。但是。。。但是,第二,我不明白为什么第一个边距总是零,它们属于哪个级别也无关紧要。在兼容模式下它们总是零。。。很难相信。。。:)那么,有没有办法解决这个问题,或者只是找到一个解决办法?关于这个问题的解决,我愿意接受任何帮助。我甚至找不到任何与这个问题相关的文章。:(也许你曾经面对过。。。或者它只是一个没有修复的错误,必须报告给微软?