简介
目标是在幻灯片中添加可以显示播放进度的图标,文中平台是macOS下的PowerPoint,读者如果使用其他平台可能会遇到部分界面不同,但是操作流程是可以参考的。具体效果,我们使用PowerPoint中的VBA(Visual Basic for Applications)宏实现。
代码块
以下是一个VBA宏代码示例,它会在每张幻灯片(除了首尾页)底部绘制一个进度条,进度长度根据当前页码与总页数的比例动态调整,进度条呈渐变效果:
Sub AddProgressBar()
Dim slide As slide
Dim slideIndex As Integer
Dim progressBar As Shape
Dim totalSlides As Integer
Dim progressWidth As Single
Dim progressHeight As Single
Dim startX As Single
Dim startY As Single
' 设置进度条的尺寸和位置
progressHeight = 6 ' 进度条的高度
startX = 0 ' 进度条的起始 X 坐标
startY = ActivePresentation.PageSetup.SlideHeight - progressHeight ' 进度条的 Y 坐标,靠近底部
' 获取总页数
totalSlides = ActivePresentation.Slides.Count
' 遍历每张幻灯片,添加或更新进度条(跳过第一页和最后一页)
For Each slide In ActivePresentation.Slides
slideIndex = slide.slideIndex
' 跳过第一页和最后一页
If slideIndex > 1 And slideIndex < totalSlides Then
' 计算当前进度条的宽度
progressWidth = ((slideIndex - 1) / (totalSlides - 2)) * ActivePresentation.PageSetup.SlideWidth
' 如果已经有名为“ProgressBar”的形状,则删除它(避免重复)
On Error Resume Next
slide.Shapes("ProgressBar").Delete
On Error GoTo 0
' 添加进度条形状
Set progressBar = slide.Shapes.AddShape(msoShapeRectangle, startX, startY, progressWidth, progressHeight)
progressBar.Fill.ForeColor.RGB = RGB(0, 102, 204) ' 进度条颜色
progressBar.Line.Visible = msoFalse ' 去除边框
progressBar.Name = "ProgressBar" ' 命名进度条
' 设置渐变填充:从蓝色到绿色,效果 为水平向右
With progressBar.Fill
.OneColorGradient Style:=msoGradientVertical, Variant:=1, Degree:=1
.ForeColor.RGB = RGB(0, 0, 255) ' 蓝色起始颜色
.BackColor.RGB = RGB(0, 191, 255) ' 背景颜色设为绿色
End With
End If
Next slide
End Sub
操作步骤及注意事项
- 在菜单栏找到“视图”中的“宏”并打开
- 一般情况列表中没有可加载的宏文件,我们随便输入一个名字,然后点击加号新建
- 删掉原先的两行代码,将文中示例代码复制粘贴并保存,随后关闭宏文件编辑界面。
- 再次打开宏文件入口,选择刚刚的宏文件,点击运用。
- 随后便能在幻灯片中看到如下效果。
- 记得将文件另存为 “启用宏的演示文稿”,再次打开时我们会见到如下提示,需选择启用宏。
注意事项
启用宏文件之后,在删减或者新增幻灯片时,进度条并不会更新,这是因为文中代码下的宏文件不会自动运行;变更后,需要手动打开再次运行。