我想改变以特定字符开头和结尾的特定单词的样式(说!)
例如,其中一张幻灯片如下:
安静的地方
我有一个特定的角色!,表示要修改(将颜色变为红色)
所以,我认为我需要VBA中的功能:
strtok
读取所有字符串(可能在每张幻灯片中以空格分隔)
输出:“安静”“地方”“No1”“吃”“No2”“说话”“!No3!” “睡眠”
strfind (strcmp)
对于每个单词,确定第一个和最后一个字符是否包含'!'
输出:“!No3!”
myfunc
对于以'!'开头和结尾的单词,将其修改为例如'bold'
这样的例子的结果将是:
安静的地方
我找到了来自sberry
的代码Sub StrModify()
Dim p As Presentation: Set p = ActivePresentation
Dim s As Slide
Dim sh As Shape
For Each s In p.Slides
For Each sh In s.Shapes
If sh.HasTextFrame Then
If sh.TextFrame.HasText Then
Debug.Print sh.TextFrame.TextRange.Text
End If
End If
Next
Next
End Sub
此功能的输出为:
安静的地方
No1 Eating
No2 Talking
!NO3!睡
这不是空格''
的标记是否有“strtok”式的功能将“安静的地方”分为“安静”和“地方”?
答案 0 :(得分:0)
每个TextRange对象都有单词,行,段落和其他可以迭代的集合:
Dim oRng As TextRange
Dim oSh As Shape
Dim oSl As Slide
Dim x As Long
For Each oSl In ActivePresentation.Slides
For Each oSh In oSl.Shapes
If oSh.HasTextFrame Then
If oSh.TextFrame.HasText Then
For Each oRng In oSh.TextFrame.TextRange.Words
Debug.Print oRng.Text
Next
End If
End If
Next
Next
答案 1 :(得分:0)
如果您打算使用史蒂夫(好)的建议来迭代DONT使用的话!作为标记.Punctuation不被视为单词的一部分。