vba - 如何自动隐藏 PowerPoint 幻灯片?
问题描述
我在我的讲座中使用 PowerPoint 并为我的学生打印幻灯片的子集(以便他们在我展示我的答案之前填写空白)。目前,我在幻灯片的左下角放了一个浅蓝色圆圈,我想在打印时隐藏(但不是在讲课时)。然后,当需要打印幻灯片时,我会手动隐藏它们,然后在讲课之前取消隐藏所有幻灯片。有没有办法自动化这个过程?我在 PC 和 Mac 上都使用 Office 365。
解决方案
这将使您开始,将其保存为 pptm,然后将副本另存为插件:
ChangeAnswersSlideState
- 将 activeslide 更改为答案幻灯片
PrintStudentHandout
- 隐藏答案幻灯片,然后打印,然后取消隐藏
Option Explicit
Private Const ANS_ID As String = "ANS"
Sub PrintStudentHandout()
ChangeAnswersSlideVisible
With ActivePresentation
.PrintOptions.ActivePrinter = "Microsoft XPS Document Writer"
.PrintOut
End With
ChangeAnswersSlideVisible msoFalse
End Sub
Private Sub ChangeAnswersSlideVisible(Optional Hide As MsoTriState = msoTrue)
Dim oSlide As Slide, oShp As Shape
For Each oSlide In ActivePresentation.Slides
For Each oShp In oSlide.Shapes
If IsAnswersShape(oShp) Then
oSlide.SlideShowTransition.Hidden = Hide
Exit For
End If
Next oShp
Next oSlide
End Sub
Sub ChangeAnswersSlideState()
Dim oShp As Shape, bChanged As Boolean
bChanged = False
For Each oShp In Application.ActiveWindow.View.Slide.Shapes
If IsAnswersShape(oShp) Then
oShp.Delete
bChanged = True
End If
Next oShp
If Not bChanged Then MakeAnswersSlide
End Sub
Private Sub MakeAnswersSlide(Optional ByRef AnswerSlide As Slide = Nothing)
If AnswerSlide Is Nothing Then Set AnswerSlide = Application.ActiveWindow.View.Slide
With AnswerSlide.Shapes.AddShape(msoShapeOval, -80, 460, 72, 72)
.TextFrame.TextRange.Text = ANS_ID
End With
End Sub
Private Function IsAnswersShape(ByRef CheckShape As Shape) As Boolean
Dim bIsAnAnswerShape As Boolean
bIsAnAnswerShape = False
With CheckShape
If .AutoShapeType = msoShapeOval Then
If .HasTextFrame Then
If .TextFrame.TextRange.Text = ANS_ID Then
bIsAnAnswerShape = True
End If
End If
End If
End With
IsAnswersShape = bIsAnAnswerShape
End Function
推荐阅读
- c# - 有没有办法使用 C# 在 Excel 中模仿格式刷?
- javascript - 提取PostgreSQL语法规则
- javascript - 在 OOP 中使用 Angular
- angular - 使用 Angular 在 HTTP 调用中获取表单数据
- python - 如何使用 python3 在 b'\\xe5' 和 b'\xe5' 之间转换?
- amazon-web-services - 获取文件内容作为 Terraform 输出
- javascript - 从 FIrebase 实时数据库中获取数据
- react-native-firebase - 链接帐户时如何从“auth/credential-already-in-use”错误中恢复
- java - 如何通过托管 Bean 在类中设置属性?
- java - 邮递员表单数据发送带有文件的复杂对象