Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перенос строки в WORDe

464
23 марта 2004 года
WildAn
147 / / 19.05.2003
Всем привет
Как бы это корректнее описать...
Есть текстовый документ со свойственным ему фарматированием. Копирую его в WORD и вот там, если включить сервис отображения непечатаемых знаков, видны все переносы в конце каждой строке.
Т.е. к форматированию WORDа непреспособлен текст.
Думаю, сталкивались с таким Вот как бы убрать эти переносы строк?
Интересно, поймет меня уважаемый ALL...
319
23 марта 2004 года
xelos
577 / / 27.02.2003
Цитата:
Originally posted by WildAn
Всем привет
Как бы это корректнее описать...
Есть текстовый документ со свойственным ему фарматированием. Копирую его в WORD и вот там, если включить сервис отображения непечатаемых знаков, видны все переносы в конце каждой строке.
Т.е. к форматированию WORDа непреспособлен текст.
Думаю, сталкивались с таким Вот как бы убрать эти переносы строк?
Интересно, поймет меня уважаемый ALL...


удалять ручками все символы переноса...
если сделать прогу, которая вместо них будет, например, пробелы ставить - не сможешь разделить абзацы... тока если они разделены дополнительно как-нить еще (типа пустой строкой).

464
23 марта 2004 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by xelos

удалять ручками все символы переноса...
если сделать прогу, которая вместо них будет, например, пробелы ставить - не сможешь разделить абзацы... тока если они разделены дополнительно как-нить еще (типа пустой строкой).


Да уж

266
23 марта 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by WildAn

Да уж


Знать так. У этой приблуды код, по-моему, 11.
На всякий пожарный - вот тебе макрос, который покажет код приблуды этой (не обессудь, сделан по-тупому и "в лоб")

Код:
Sub Макрос4()
'
' Макрос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


Открываешь новый вордовый документ, создаёшь в нём макрос этот, копируешь на лист "подозривательный символ", запускаешь макрос - к тексту прибаятся коды всех символов со страницы. Тоесть, если у тебя будет эта кракозябра и перенос строки, по к тексту прибавятся их коды.

Потом берёшь ещё один мой "тупой" макрос, и выполняешь его (будет работать медленно, но зато, так как "одноразовый", пишется быстро) (естественно, выполняешь для проблемной страницы)

Код:
Sub DelEnters_Too()
'МАХ Удаляет дублирующиеся ентеры
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), и по нему можно отсекать абзац, дибо можно плясать от следующего кода:
 
Код:
With Selection.ParagraphFormat
    .LeftIndent = CentimetersToPoints(0.95)
    .SpaceBeforeAuto = False
    .SpaceAfterAuto = False
  End With

Этот код устанавливает отступ для абзацев. Попробуй разобраться с ним и отлавливать отступ в начале строки, если текст форматирован не табами.
266
24 марта 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by WildAn
Всем привет
Как бы это корректнее описать...
Есть текстовый документ со свойственным ему фарматированием. Копирую его в WORD и вот там, если включить сервис отображения непечатаемых знаков, видны все переносы в конце каждой строке.
Т.е. к форматированию WORDа непреспособлен текст.
Думаю, сталкивались с таким Вот как бы убрать эти переносы строк?
Интересно, поймет меня уважаемый ALL...


Ну как, получилост что-нибудь?:P

464
25 марта 2004 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by mhaturov

Ну как, получилост что-нибудь?:P


У меня текст на 22724 строки, примерно на 380 страниц :-) Прикинь, сколько он его лопатить будет.
Это просто я книгу распечатывал, хотел сэкономить бумаги. Вопользовался прогой Verstka

266
25 марта 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by WildAn

У меня текст на 22724 строки, примерно на 380 страниц :-) Прикинь, сколько он его лопатить будет.
Это просто я книгу распечатывал, хотел сэкономить бумаги. Вопользовался прогой Verstka


Да ладно, запустишь на лопаченье, и пусть пашет - за 1-2 дня спавится.
А вообще, если не по Secection гонять цикл, а вогнать значение из Selection в переменную, другой переменной присволить значение Len(Selection.Text) и её использовать в качестве верхнего параметра цикла, то ещё быстрее будет.
Если же загонять текст в TextStream, то ещё быстрее дело пойдёт.
А если на данном примере не в цикле искать перенесы каретки, а воспользоваться Instr и прочьими строковыми функциями, то вообще можно добиться того, что за несколько минут, если не быстрее всё перелопатит. Гдавное - творческий подход.;)

464
25 марта 2004 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by mhaturov

Да ладно, запустишь на лопаченье, и пусть пашет - за 1-2 дня спавится.
А вообще, если не по Secection гонять цикл, а вогнать значение из Selection в переменную, другой переменной присволить значение Len(Selection.Text) и её использовать в качестве верхнего параметра цикла, то ещё быстрее будет.
Если же загонять текст в TextStream, то ещё быстрее дело пойдёт.
А если на данном примере не в цикле искать перенесы каретки, а воспользоваться Instr и прочьими строковыми функциями, то вообще можно добиться того, что за несколько минут, если не быстрее всё перелопатит. Гдавное - творческий подход.;)


Думал, может у кого есть готовое решение
Сейчас пока некогда этим заниматься :-)

266
25 марта 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by WildAn

Думал, может у кого есть готовое решение
Сейчас пока некогда этим заниматься :-)


Ну готовое, или почти готовое пару дней твой текст будет лопатить.;)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог