统计形状数量
通过遍历所有幻灯片,统计演示文稿中的形状总数,并在一张新建幻灯片上显示该数量。
(function () {
let presentation = Api.GetPresentation();
let totalSlides = presentation.GetSlidesCount();
let shapeCount = 0;
// 遍历每一张幻灯片并统计形状数量
for (let slideIndex = 0; slideIndex < totalSlides; slideIndex++) {
let currentSlide = presentation.GetSlideByIndex(slideIndex);
let shapes = currentSlide.GetAllShapes();
shapeCount = shapeCount + shapes.length;
}
/*
Just show it on console
console.log(shapeCount);
*/
// 创建一张新幻灯片,并在其中显示统计结果
let newSlide = Api.CreateSlide();
let rectangleShape = Api.CreateShape("rect", 100 * 36000, 50 * 36000);
rectangleShape.SetPosition(608400, 1267200);
let paragraph = Api.CreateParagraph();
paragraph.AddText("Number of shapes: " + shapeCount.toString());
paragraph.SetColor(0, 0, 0);
let content = rectangleShape.GetDocContent();
content.Push(paragraph);
newSlide.AddObject(rectangleShape);
presentation.AddSlide(newSlide);
})();
使用方法: GetPresentation, GetSlidesCount, GetSlideByIndex, GetAllShapes, CreateSlide, CreateShape, SetPosition, CreateParagraph, AddText, GetDocContent, Push, AddObject, AddSlide
参考 Microsoft VBA 宏代码
Sub CountShapesInPresentation()
Dim slide As slide
Dim shape As shape
Dim count As Integer
count = 0
' 遍历每张幻灯片并统计所有形状数量
For Each slide In ActivePresentation.Slides
count = count + slide.Shapes.Count
Next slide
' 添加新幻灯片并显示统计结果
Dim newSlide As slide
Set newSlide = ActivePresentation.Slides.Add(ActivePresentation.Slides.Count + 1, ppLayoutText)
Dim textBox As shape
Set textBox = newSlide.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 100, 400, 50)
textBox.TextFrame.TextRange.Text = "Number of shapes: " & count
End Sub