
我的目标是把名单分开。目前,我正在使用Shapes().TextFrame.TextRange读取形状中的文本。我们可以使用Mid()来拆分字符;但是,我想知道如何分割这些行,因为每一行中的字符都是不同的。
我只想在MsgBox中显示第二行(比如说)。我该怎么做?
谢谢!
发布于 2021-05-31 16:55:16
让PPT帮你做重活吧:
With ActiveWindow.Selection.ShapeRange(1)
With .TextFrame.TextRange
MsgBox .Paragraphs(2)
End With
End With发布于 2021-05-31 07:40:55
在文本框中,您的问题可以不分割地解决吗?
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特殊字符代码

输出:

发布于 2021-05-31 07:46:33
将文本分割成几个部分的命令是Split,请参阅https://learn.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将为您提供一个包含变量tokens中的4个元素的数组。这总是0-索引:
0 ABC
1 DEF
2
3 XYZ现在,您需要知道的是定义换行符的字符。如果您在Powerpoint中创建了形状,那就是传输返回字符,在VBA中有一个常量的vbCr:
Dim sh As Shape
set sh = ActivePresentation.Slides(1).Shapes(1)
t = sh.TextFrame.TextRange
tokens = Split(t, vbCr)它在Word中的工作原理相同,但是在Excel中,您似乎需要使用TextFrame2,分隔符是Line字符:
t = sh.TextFrame2.TextRange
tokens = Split(t, vbLf)https://stackoverflow.com/questions/67769416
复制相似问题