将文本拆分为 .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