1

Тема: разбивка на предложения

здравствуйте!
как можно разбить весь текст на предложения, чтобы каждое из предложений начиналось с новой строки.
спасибо

2

Re: разбивка на предложения

Вот

Sub OneParagraphOneSentence()
  Dim i As Long
  For i = Sentences.Count To 1 Step -1
    If Sentences(i).Characters.Last.Text <> vbCr Then Sentences(i).InsertParagraphAfter
  Next
End Sub
Лучше день потерять — потом за пять минут долететь!

3

Re: разбивка на предложения

че-то не работает. вот здесь "  For i = Sentences.Count To 1 Step -1  "

спасибо

4

Re: разбивка на предложения

Замените на ActiveDocument.Sentences, хотя у меня работало

Лучше день потерять — потом за пять минут долететь!

5

Re: разбивка на предложения

viter.alex пишет:

Замените на ActiveDocument.Sentences, хотя у меня работало

изменил. теперь здесь что-то не так "  ActiveDocument.Sentences(i).InsertParagraphAfter  "

спасибо

6

Re: разбивка на предложения

Какую ошибку выдаёт?

Лучше день потерять — потом за пять минут долететь!

7

Re: разбивка на предложения

" не удается изменить диапозон ". 5904

спасибо

8

Re: разбивка на предложения

Вот этот макрос сработает (обернул в ActiveDocument)? Проверьте:

Sub OneParagraphOneSentence()
  Dim i As Long
  With ActiveDocument
  For i = .Sentences.Count To 1 Step -1
    If .Sentences(i).Characters.Last.Text <> vbCr Then .Sentences(i).InsertParagraphAfter
  Next
  End With
End Sub

9

Re: разбивка на предложения

опять " не удается изменить диапозон " (5904) в .Sentences(i).InsertParagraphAfter

10

Re: разбивка на предложения

нашел!

Правка = > Заменить

Найти ". "
Заменить ". ^p"

спасибо все равно

11

Re: разбивка на предложения

Что ж, если это подходит, то очень хорошо. Но точка с пробелом может идти и после сокращённой единицы измерения. А также предложение может заканчиваться не точкой, а другим знаком препинания.

Лучше день потерять — потом за пять минут долететь!

12

Re: разбивка на предложения

полностью согласен. поэтому если поможете "добить" макрос - огромное спасибо

13

Re: разбивка на предложения

Я даже не знаю, чем помочь. Дайте пример документа, где макрос не работает.

Лучше день потерять — потом за пять минут долететь!

14

Re: разбивка на предложения

Да, интересно посмотреть, что там в документе, из-за чего не работает элементарный макрос...

15

Re: разбивка на предложения

до документа не дошло. еще при его отладке в visual basic вылазит ошибка.

16

Re: разбивка на предложения

по-моему все дело в том, что текст был в таблице скрытой!
можно поправить как-то макрос для таблиц?

17

Re: разбивка на предложения

и после "т.е. " переносит предложение. Хотя это уже мелочи, но тогда в чем отличие от простой замены?

18

Re: разбивка на предложения

tetris1981 пишет:

по-моему все дело в том, что текст был в таблице скрытой!
можно поправить как-то макрос для таблиц?

tetris1981 пишет:

и после "т.е. " переносит предложение. Хотя это уже мелочи, но тогда в чем отличие от простой замены?

Всё запуталось ещё больше. Для каких таблиц, что и где находится? Ничего не понятно. Дайте пример документа, который нужно изменить

Лучше день потерять — потом за пять минут долететь!

19

Re: разбивка на предложения

загвоздка была в том, что текст у меня  находился внутри вордовской таблицы, которую я не видел, так как она была скрыта. Получается, что макрос не может работать с таблицами.
Все, что вне таблицы, он делает прекрасно, кроме таких сокращений как "т.е.", "т.к.", которые он принимает за конец предложения.

Post's attachments

rus.docx 12.06 Кб, 1 скачиваний с 2010-01-21 

You don't have the permssions to download the attachments of this post.

20

Re: разбивка на предложения

Пробуем так. Поставьте курсор в таблицу и запускайте макрос:

Sub OneParagraphOneSentence()
  Dim i As Long
  If Not Selection.Information(wdWithInTable) Then Exit Sub
  With Selection.Tables(1).Range
    For i = .Sentences.Count To 1 Step -1
      Debug.Print "i=" & i & vbTab & "code=" & AscW(.Sentences(i).Characters.Last.Text)
      If .Sentences(i).Characters.Last.Text <> ChrW(13) Then .Sentences(i).InsertParagraphAfter
    Next
  End With
End Sub
Лучше день потерять — потом за пять минут долететь!

21

Re: разбивка на предложения

все также не работает. при чем щас даже и без таблиц не работает. а у Вас все получилось? странно.

22

Re: разбивка на предложения

Если бы не работал, я бы не выкладывал, логично? В приложенном Вами файле всё работало. Последний макрос вне таблицы работать не будет, это обеспечивается вот этой строчкой:

If Not Selection.Information(wdWithInTable) Then Exit Sub

Если курсор находится вне таблицы, то процедура прерывается.

Лучше день потерять — потом за пять минут долететь!

23

Re: разбивка на предложения

это еще более странно, тк я ставлю курсор в таблицу, запускаю новый макрос, он выдает ту же самую ошибку вот здесь ".Sentences(i).InsertParagraphAfter".
я не хочу тратить Ваше время, буду делать заменой, хотя как мне кажется, действительно, макрос не такой сложный.
спасибо

24

Re: разбивка на предложения

Ничьё время вы не тратите. Этот форум для того и создан, чтобы разбираться в проблемах пользователей, если они этого хотят. Давайте попробуем так. В вашем документе запустите этот макрос:

Sub LetsTryAgain()
  Dim i As Long
  If Not Selection.Information(wdWithInTable) Then Exit Sub
  Open CurDir & "\" & "wordexpert.log" For Output As #1
  Print #1, "Полный путь к документу: " & ActiveDocument.FullName
  With Selection.Tables(1).Range
    Print #1, "Количество предложений в таблице: " & .Sentences.Count
    For i = .Sentences.Count To 1 Step -1
      Print #1, "Номер предложения=" & i & vbTab & "Код последнего символа: " & AscW(.Sentences(i).Characters.Last.Text)
    Next
  End With
  Close #1
  Shell "notepad """ & CurDir & "\" & "wordexpert.log" & """"
End Sub

После его выполнения в Блокноте будет открыт текстовый файл, содержимое которого выложите здесь

Лучше день потерять — потом за пять минут долететь!

25

Re: разбивка на предложения

Полный путь к документу: D:\Документы\rus.docx
Количество предложений в таблице: 11
Номер предложения=11    Код последнего символа: 13
Номер предложения=10    Код последнего символа: 32
Номер предложения=9    Код последнего символа: 32
Номер предложения=8    Код последнего символа: 13
Номер предложения=7    Код последнего символа: 13
Номер предложения=6    Код последнего символа: 32
Номер предложения=5    Код последнего символа: 32
Номер предложения=4    Код последнего символа: 32
Номер предложения=3    Код последнего символа: 13
Номер предложения=2    Код последнего символа: 32
Номер предложения=1    Код последнего символа: 13

Отредактировано tetris1981 (21.01.2010 14:27:15)

Post's attachments

rus.docx 12.1 Кб, 2 скачиваний с 2010-01-21 

You don't have the permssions to download the attachments of this post.

26

Re: разбивка на предложения

Ну тогда я ничего не понимаю

Лучше день потерять — потом за пять минут долететь!

27

Re: разбивка на предложения

может тогда подскажете, как вытащить весь текст из таблицы по быстрому?

28

Re: разбивка на предложения

Стандартным инструментом преобразования таблицы в текст

Лучше день потерять — потом за пять минут долететь!

29

Re: разбивка на предложения

viter.alex пишет:

Стандартным инструментом преобразования таблицы в текст

точно. спасибо.