2013-07-01 2 views
0

Я хочу удалить разрыв строки, который у меня есть в определенном тексте. Я проверяю этот форум, как это сделать, и было несколько ответов, но никто не работает для меня, по крайней мере, в 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

+1

Как вы заявляете «текст»? Вы думали использовать функцию «Заменить»? – Floris

+0

Вы хотите, чтобы вы удалили/заменили символ последнего абзаца в конце текста или хотите удалить в нем все разрывы строк? вы хотите сделать это в любом текстовом поле, ячейке таблицы или где? –

+0

Возможно, я сам не объяснил ... Что я хочу, это скопировать каждый абзац и добавить к нему текст. Поэтому я использую ActivePresentation.Slides (sliNum) .Shapes (shaNum) .TextFrame.TextRange.Paragraphs (i) .text. Проблема в том, что, когда я помещал ее в MsgBox, остальная часть добавляемого текста появляется в другой строке, и это потому, что у меня разрыв строки. Я хочу удалить его. Спасибо –

ответ

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 

Как вы увидите, это устраняет разрывы строк. Адаптировать для вашей цели ...

редактировать Как Стив Rindsberg отметил, что может быть, что ваша версия Powerpoint использует нечто иное, чем vbCrLf как пункт ограничивающего характер. Вот какой код, который поможет вам понять это: для каждой фигуры с текстом в нем он будет извлекать текст, отображая все «управляющие символы» (значение ASCII < 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 в конце абзаца ...

+0

Спасибо за ответ. Я использую строку, поэтому я не могу использовать text.Replace vbCrLf, "".На самом деле я использую каждый абзац textBox. Но если я делаю то, что вы пишете, все абзацы удаляются, и я хочу их использовать, поэтому мне нужно скопировать содержимое каждого абзаца в строку и попытаться удалить разрыв строки эта строка. –

+0

Обновленный ответ - с использованием функции «Заменить», как это применимо к строкам, а не к объектам. – Floris

+0

Он по-прежнему дает мне ту же ошибку. Я делаю следующее: text = sh.TextFrame.TextRange.Paragraphs (1) .text и textS = Заменить (текст, vbCrLf, ""). Затем, когда я пытаюсь показать его с помощью MsgBox textS & "more text", вторая строка появляется в другой строке. –

1

Ваша проблема, скорее всего, версии PPT с 2007 года не использует VBCrLf в качестве символа конца абзаца. Это объясняет, какие версии используют какие символы для строки или абзаца концов:

Пункт окончаний и линии ломает http://www.pptfaq.com/FAQ00992_Paragraph_endings_and_line_breaks.htm

Это из часто задаваемых вопросов сайта РРТ, что я поддерживаю.

+0

Вау - это объясняет все, что я наблюдал, и это меня озадачило! Microsoft никогда не перестает удивлять меня своей несогласованностью ... – Floris

+1

Мои брови чередуются быстро между режимами «нахмуриться» и «испугать». ;-) –

Смежные вопросы