Перенос строки в WORDe
Как бы это корректнее описать...
Есть текстовый документ со свойственным ему фарматированием. Копирую его в WORD и вот там, если включить сервис отображения непечатаемых знаков, видны все переносы в конце каждой строке.
Т.е. к форматированию WORDа непреспособлен текст.
Думаю, сталкивались с таким Вот как бы убрать эти переносы строк?
Интересно, поймет меня уважаемый ALL...
Всем привет
Как бы это корректнее описать...
Есть текстовый документ со свойственным ему фарматированием. Копирую его в WORD и вот там, если включить сервис отображения непечатаемых знаков, видны все переносы в конце каждой строке.
Т.е. к форматированию WORDа непреспособлен текст.
Думаю, сталкивались с таким Вот как бы убрать эти переносы строк?
Интересно, поймет меня уважаемый ALL...
удалять ручками все символы переноса...
если сделать прогу, которая вместо них будет, например, пробелы ставить - не сможешь разделить абзацы... тока если они разделены дополнительно как-нить еще (типа пустой строкой).
удалять ручками все символы переноса...
если сделать прогу, которая вместо них будет, например, пробелы ставить - не сможешь разделить абзацы... тока если они разделены дополнительно как-нить еще (типа пустой строкой).
Да уж
Да уж
Знать так. У этой приблуды код, по-моему, 11.
На всякий пожарный - вот тебе макрос, который покажет код приблуды этой (не обессудь, сделан по-тупому и "в лоб")
'
' Макрос4 Макрос
' Макрос записан 23.03.2004 Шатуров Максим
'
Dim I As Long
Dim Str As String
Selection.WholeStory
Str = vbNullString
For I = 1 To Len(Selection)
Str = Str & " " & Asc(Mid$(Selection, I, 1))
Next
Selection.Text = Selection.Text & Str
End Sub
Открываешь новый вордовый документ, создаёшь в нём макрос этот, копируешь на лист "подозривательный символ", запускаешь макрос - к тексту прибаятся коды всех символов со страницы. Тоесть, если у тебя будет эта кракозябра и перенос строки, по к тексту прибавятся их коды.
Потом берёшь ещё один мой "тупой" макрос, и выполняешь его (будет работать медленно, но зато, так как "одноразовый", пишется быстро) (естественно, выполняешь для проблемной страницы)
'МАХ Удаляет дублирующиеся ентеры
Dim I As Long
Dim TxT As String
Dim Letter As String
Selection.WholeStory
TxT = vbNullString
For I = 1 To Len(Selection.Text)
Letter = vbNullString
If Asc(Mid$(Selection.Text, I, 1)) = 11 Then 'МАХ Тут указываешь код своей приблуды
Letter = Space$(1) 'МАХ Ну или что там тебе вместо этой приблуды нужно
Else
Letter = Mid$(Selection.Text, I, 1)
End If
TxT = TxT & Letter
Next
Selection.Text = TxT
End Sub
Если текст большой, ждёшь от 1 минуты и до суток (у меня 64 страницы 20 часов лопатил похожий алгоритм как-то). Но так как торопиться некуда, ставишь процессу минимальный приоритет, и работаешь спокойно, пока он там корячится:D
P.S. Токмо нужно на всякий пожарный проверить всё же, как абзацы разделены. Если текст небольшой, можно ручками Enter'ов понаставить в начале абзацев, иначе помотреть - если есть VBCR, VBCRLF или ещё что-то с кодом, отличным от 11, то можно смело лопатить, иначе нужно думать, как сберечь абзацы...
Стоп! Придумал как можно попытаться "поймать" абзац!
Если у тебя есть отступ в абзаце, то это или символ с кодом 9 (Tab), и по нему можно отсекать абзац, дибо можно плясать от следующего кода:
.LeftIndent = CentimetersToPoints(0.95)
.SpaceBeforeAuto = False
.SpaceAfterAuto = False
End With
Этот код устанавливает отступ для абзацев. Попробуй разобраться с ним и отлавливать отступ в начале строки, если текст форматирован не табами.
Всем привет
Как бы это корректнее описать...
Есть текстовый документ со свойственным ему фарматированием. Копирую его в WORD и вот там, если включить сервис отображения непечатаемых знаков, видны все переносы в конце каждой строке.
Т.е. к форматированию WORDа непреспособлен текст.
Думаю, сталкивались с таким Вот как бы убрать эти переносы строк?
Интересно, поймет меня уважаемый ALL...
Ну как, получилост что-нибудь?:P
Ну как, получилост что-нибудь?:P
У меня текст на 22724 строки, примерно на 380 страниц :-) Прикинь, сколько он его лопатить будет.
Это просто я книгу распечатывал, хотел сэкономить бумаги. Вопользовался прогой Verstka
У меня текст на 22724 строки, примерно на 380 страниц :-) Прикинь, сколько он его лопатить будет.
Это просто я книгу распечатывал, хотел сэкономить бумаги. Вопользовался прогой Verstka
Да ладно, запустишь на лопаченье, и пусть пашет - за 1-2 дня спавится.
А вообще, если не по Secection гонять цикл, а вогнать значение из Selection в переменную, другой переменной присволить значение Len(Selection.Text) и её использовать в качестве верхнего параметра цикла, то ещё быстрее будет.
Если же загонять текст в TextStream, то ещё быстрее дело пойдёт.
А если на данном примере не в цикле искать перенесы каретки, а воспользоваться Instr и прочьими строковыми функциями, то вообще можно добиться того, что за несколько минут, если не быстрее всё перелопатит. Гдавное - творческий подход.;)
Да ладно, запустишь на лопаченье, и пусть пашет - за 1-2 дня спавится.
А вообще, если не по Secection гонять цикл, а вогнать значение из Selection в переменную, другой переменной присволить значение Len(Selection.Text) и её использовать в качестве верхнего параметра цикла, то ещё быстрее будет.
Если же загонять текст в TextStream, то ещё быстрее дело пойдёт.
А если на данном примере не в цикле искать перенесы каретки, а воспользоваться Instr и прочьими строковыми функциями, то вообще можно добиться того, что за несколько минут, если не быстрее всё перелопатит. Гдавное - творческий подход.;)
Думал, может у кого есть готовое решение
Сейчас пока некогда этим заниматься :-)
Думал, может у кого есть готовое решение
Сейчас пока некогда этим заниматься :-)
Ну готовое, или почти готовое пару дней твой текст будет лопатить.;)