我想删除某个文本中的换行符。我在这个论坛上查看了如何做到这一点并且有几个答案,但至少在powerpoint中没有人能为我工作。
我看到左方法的一个例子:
If Len(myString) <> 0 Then
If Right$(myString, 2) = vbCrLf Or Right$(myString, 2) = vbNewLine Then
myString = Left$(myString, Len(myString) - 2)
End If
End If
text = Left (text, number)
给出了类型不匹配错误
text = Left$ (text, number)
给了我compile error: Type-declaration character does not match declared data type.
我也尝试用“”代替换行符,但它什么也没做。它没有给我一个错误但是线路突破仍然存在。
我使用的换行符是vbCrLf
答案 0 :(得分:1)
您的问题可能是自2007年以来的PPT版本不使用VBCrLf作为段落结束字符。这解释了哪些版本使用行或段落结尾的字符:
段落结尾和换行符 http://www.pptfaq.com/FAQ00992_Paragraph_endings_and_line_breaks.htm
它来自我维护的PPT FAQ网站。
答案 1 :(得分:0)
对于要删除vbCrLf
的对象,请尝试使用
myObj.TextFrame.TextRange.Replace vbCrLf, ""
如果你想对字符串(而不是对象)这样做,你可以尝试这样的事情:
Sub stripStrings()
Dim longString As String
Dim stringCopy As String
longString = "first paragraph" & vbCrLf & "second paragraph" & vbCrLf & "third paragraph" & vbCrLf
stringCopy = Replace(longString, vbCrLf, "")
MsgBox "longstring is now:" & vbCrLf & longString
MsgBox "stringcopy is:" & vbCrLf & stringCopy
End Sub
正如您将看到的,这将删除换行符。适应您的目的......
编辑正如Steve Rindsberg所指出的,可能是您的Powerpoint版本使用了vbCrLf
以外的其他内容作为段落分隔字符。下面是一些代码可以帮助您解决这个问题 - 对于每个包含文本的形状,它将提取文本,将所有“控制字符”(ASCII值&lt; 32)显示为\xnn
nn
是控制字符的值(例如vbCR
将显示为\x13
):
Sub displayControlCharacters()
Dim sh As Shape
Dim t As String
For Each sh In ActivePresentation.Slides(1).Shapes
If sh.TextFrame.HasText Then
sh.Select
t = sh.TextFrame.TextRange.Text
MsgBox "The shape contains: " & vbCrLf & escapeString(t)
End If
Next sh
End Sub
Function escapeString(t As String)
Dim ii As Integer
Dim r As String
For ii = 1 To Len(t)
If Asc(Mid(t, ii, 1)) > 31 Then
r = r + Mid(t, ii, 1)
Else
r = r + "\x" + Format(Asc(Mid(t, ii, 1)), "0")
End If
Next
escapeString = r
End Function
一个简单的测试表明,在PowerPoint 2010中,您在段落末尾只有\x13
...