使用 VBA 在 Power Point 2007 文本框中移动文本
Shift text in Power Point 2007 text box using VBA
我需要移动所有文本框中文本的位置(每张幻灯片 1 个文本框)。字幕的第一语言是白色的,英语是黄色的。现在我想要黄色在上面,白色在下面。所以首先我想 select 白色,复制,擦除,转到黄色的末尾并粘贴(white/yellow 之间有换行符)。可以吗?
也许对此类脚本进行一些更改会有所帮助?
Sub RemoveWhiteText()
Dim oSl As Slide
Dim oSh As Shape
With ActivePresentation
For Each oSl In .Slides
For Each oSh In oSl.Shapes
With oSh
If .HasTextFrame Then
If .TextFrame.HasText Then
If TextRange.Font.Color = vbWhite Then
oSh.TextFrame.Text
End If
End If
End If
End With
Next
Next
End With
End Sub
这会将字体颜色为白色的第一个 运行 移动到文本框的末尾。
试试这个:
Sub MoveWhiteTextToEnd(oSh As Shape)
With oSh
With oSh.TextFrame.TextRange.Runs(1)
If .Font.Color.RGB = vbWhite Then
.Cut
oSh.TextFrame.TextRange.InsertAfter (vbCrLf)
oSh.TextFrame.TextRange.Characters(oSh.TextFrame.TextRange.Length + 1).Paste
End If
End With
End With
End Sub
通过此调用更新您的代码:
If .TextFrame.HasText Then
Call MoveWhiteTextToEnd(oSh)
End If
我需要移动所有文本框中文本的位置(每张幻灯片 1 个文本框)。字幕的第一语言是白色的,英语是黄色的。现在我想要黄色在上面,白色在下面。所以首先我想 select 白色,复制,擦除,转到黄色的末尾并粘贴(white/yellow 之间有换行符)。可以吗?
也许对此类脚本进行一些更改会有所帮助?
Sub RemoveWhiteText()
Dim oSl As Slide
Dim oSh As Shape
With ActivePresentation
For Each oSl In .Slides
For Each oSh In oSl.Shapes
With oSh
If .HasTextFrame Then
If .TextFrame.HasText Then
If TextRange.Font.Color = vbWhite Then
oSh.TextFrame.Text
End If
End If
End If
End With
Next
Next
End With
End Sub
这会将字体颜色为白色的第一个 运行 移动到文本框的末尾。 试试这个:
Sub MoveWhiteTextToEnd(oSh As Shape)
With oSh
With oSh.TextFrame.TextRange.Runs(1)
If .Font.Color.RGB = vbWhite Then
.Cut
oSh.TextFrame.TextRange.InsertAfter (vbCrLf)
oSh.TextFrame.TextRange.Characters(oSh.TextFrame.TextRange.Length + 1).Paste
End If
End With
End With
End Sub
通过此调用更新您的代码:
If .TextFrame.HasText Then
Call MoveWhiteTextToEnd(oSh)
End If