将文本拆分为 .TextRange
Split Text in .TextRange
我的objective是拆分List。目前,我正在使用 Shapes().TextFrame.TextRange
来读取形状内的文本。我们可以使用Mid()
来分割字符;但是,我想知道如何拆分这些行,而不是因为每行中的字符各不相同。
我只想在 MsgBox 中显示第二行(比方说)。我该如何进行?
谢谢!
您的问题在文本框内不拆分就可以解决吗?
Sub test1()
Dim resultString As String
resultString = ActivePresentation.Slides(1).Shapes(3).TextFrame.TextRange
MsgBox resultString
End Sub
结果:
只有在ppt的主标题框内才需要拆分,注意下面代码中无法显示的特殊字符:
Sub test1()
Dim resultString As String
Dim sArray
Dim i As Long
sArray = Split(ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange, "")
resultString = ""
For i = LBound(sArray) To UBound(sArray)
If resultString <> "" Then
resultString = resultString & vbNewLine & sArray(i)
Else
resultString = sArray(i)
End If
Next
MsgBox resultString
End Sub
带有特殊字符的代码
分割文本的命令是Split
,见https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/split-function
Dim t As String, tokens() As String, i As Long
t = "ABC,DEF,,XYZ"
tokens = Split(t, ",")
For i = LBound(tokens) To UBound(tokens)
Debug.Print i, tokens(i)
Next
会给你一个包含 4 个元素的数组,变量 tokens
。这始终为 0 索引:
0 ABC
1 DEF
2
3 XYZ
现在您只需要知道定义换行符的字符即可。如果您在 Powerpoint 中创建了形状,那就是 Carriage Return 字符,在 VBA 中有一个常数 vbCr
:
Dim sh As Shape
set sh = ActivePresentation.Slides(1).Shapes(1)
t = sh.TextFrame.TextRange
tokens = Split(t, vbCr)
它在 Word 中的工作原理相同,但是在 Excel 中,您似乎需要使用 TextFrame2
分隔符是换行符:
t = sh.TextFrame2.TextRange
tokens = Split(t, vbLf)
让 PPT 为您完成繁重的工作:
With ActiveWindow.Selection.ShapeRange(1)
With .TextFrame.TextRange
MsgBox .Paragraphs(2)
End With
End With
我的objective是拆分List。目前,我正在使用 Shapes().TextFrame.TextRange
来读取形状内的文本。我们可以使用Mid()
来分割字符;但是,我想知道如何拆分这些行,而不是因为每行中的字符各不相同。
我只想在 MsgBox 中显示第二行(比方说)。我该如何进行?
谢谢!
您的问题在文本框内不拆分就可以解决吗?
Sub test1()
Dim resultString As String
resultString = ActivePresentation.Slides(1).Shapes(3).TextFrame.TextRange
MsgBox resultString
End Sub
结果:
只有在ppt的主标题框内才需要拆分,注意下面代码中无法显示的特殊字符:
Sub test1()
Dim resultString As String
Dim sArray
Dim i As Long
sArray = Split(ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange, "")
resultString = ""
For i = LBound(sArray) To UBound(sArray)
If resultString <> "" Then
resultString = resultString & vbNewLine & sArray(i)
Else
resultString = sArray(i)
End If
Next
MsgBox resultString
End Sub
带有特殊字符的代码
分割文本的命令是Split
,见https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/split-function
Dim t As String, tokens() As String, i As Long
t = "ABC,DEF,,XYZ"
tokens = Split(t, ",")
For i = LBound(tokens) To UBound(tokens)
Debug.Print i, tokens(i)
Next
会给你一个包含 4 个元素的数组,变量 tokens
。这始终为 0 索引:
0 ABC
1 DEF
2
3 XYZ
现在您只需要知道定义换行符的字符即可。如果您在 Powerpoint 中创建了形状,那就是 Carriage Return 字符,在 VBA 中有一个常数 vbCr
:
Dim sh As Shape
set sh = ActivePresentation.Slides(1).Shapes(1)
t = sh.TextFrame.TextRange
tokens = Split(t, vbCr)
它在 Word 中的工作原理相同,但是在 Excel 中,您似乎需要使用 TextFrame2
分隔符是换行符:
t = sh.TextFrame2.TextRange
tokens = Split(t, vbLf)
让 PPT 为您完成繁重的工作:
With ActiveWindow.Selection.ShapeRange(1)
With .TextFrame.TextRange
MsgBox .Paragraphs(2)
End With
End With