我需要使用相同的幻灯片,背景和除文本之外的所有内容进行两次演示:一个用德语,一个用英语 . 因此,我有两个单独的演示文稿,我必须始终同时更新,否则一个语言版本将过时,我经常忘记我改变了什么 .
我已经制作了一个自定义节目,所有幻灯片都复制到一个PowerPoint演示文稿中,效果相当不错,但每次我编辑一种语言时,我仍然必须更改两个相同的幻灯片 .
因此,我正在尝试编写一个宏,它将识别演示文稿中的所有文本框,并在其中显示德语文本并在演出期间隐藏它们,反之亦然 . 然后,每个宏都将链接到 Headers 幻灯片上的一个名为“英语”或“德语”的超链接框,当单击该框时,它将隐藏其他语言的文本框,同时保留所有图片和格式相同 . 理想情况下,宏会隐藏一种语言中的所有框,并在同一步骤中再次显示另一种语言中的所有框,以便演示文稿始终可用,并且我没有用户打开PPT并且没有文本盒子因为它们都会隐藏起来......
为了实现这一点,我有两个文本框,在同一张幻灯片中包含两种语言的文本,这就是为什么我要隐藏文本框 .
我能够隐藏所有文本框,但不能使用特定语言的文本框(也就是说,无论编辑语言如何,所有框都会被隐藏但不会被隐藏) .
PS - 文本框不需要在这里引用...它可以只是指一个形状 . 我试图避免,图片将被隐藏,思想文本框将是引用我想要的最佳方式 .
有没有更好的办法?
我真的不知道如何在VBA中引用一种语言,我偶然发现了这个网站,并认为有人可能有一个快速的技巧来帮助我解决这个问题 . 我将混合文本框而不是混合出特定语言框的代码如下:
Sub GermanTextBoxFinder()
Dim SlideToCheck As Slide
Dim ShapeIndex As Integer
' Visit each slide
For Each SlideToCheck In ActivePresentation.Slides
' On each slide, count down through the shapes
For ShapeIndex = SlideToCheck.Shapes.Count To 1 Step -1
' If the shape IS a text box and DOES have German text
If SlideToCheck.Shapes(ShapeIndex).Type = msoTextBox And _
MsoLanguageID.msoLanguageIDGerman _
Then
' Toggle visibility of German Textboxes
SlideToCheck.Shapes(ShapeIndex).Visible = msoFalse
End If
Next
Next
End Sub
2 回答
为什么不用带有德语文字的形状来命名这些形状?例如 . 对于德语文本使用前缀“txtGER”,对于英语文本使用“txtENG” . 然后你可以使用类似下面的内容:
(有关如何重命名形状的信息,请参阅this q+a) .
这将隐藏包含英语或法语的文本框/形状 . 您可以修改HideFrench以隐藏德语... Intellisense将提供正确的常量 .