Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / min и max слово в документе Word / 25 сообщений из 45, страница 1 из 2
20.05.2010, 21:51
    #36640323
woofer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
Подскажите как найте самое короткое и длинное слово в каждом предложении в Word
...
Рейтинг: 0 / 0
20.05.2010, 21:56
    #36640333
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
Если документ не очень длинный - разбить весь текст функцией Split с разделителем "точка" на предложения. Потом каждый элемент бить той же функцией на слова (по пробелу) и искать самое длинное и самое короткое.
...
Рейтинг: 0 / 0
20.05.2010, 22:11
    #36640355
woofer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
Shocker.ProЕсли документ не очень длинный - разбить весь текст функцией Split с разделителем "точка" на предложения. Потом каждый элемент бить той же функцией на слова (по пробелу) и искать самое длинное и самое короткое.
Нет это не пойдёт нужно с помощью обьекта Document
...
Рейтинг: 0 / 0
20.05.2010, 22:36
    #36640377
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
woofer Нет это не пойдёт нужно с помощью обьекта Document

Ну перебирайте предложения в коллекции Document.Sentences
...
Рейтинг: 0 / 0
20.05.2010, 22:39
    #36640379
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
Shocker.ProНу перебирайте предложения в коллекции Document.Sentences

Ну а в каждом предложении - коллекцию Words
...
Рейтинг: 0 / 0
20.05.2010, 22:47
    #36640389
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
Ща поковырял объектную модель - это не совсем коллекции...
Вот так работает нормально:
Код: plaintext
1.
2.
3.
4.
5.
Dim w As Range, i As Long
For i =  1  To ThisDocument.Sentences.Count
  For Each w In ThisDocument.Sentences(i).Words
    If w <> "" Then Debug.Print w
  Next
Next
...
Рейтинг: 0 / 0
21.05.2010, 13:48
    #36641514
woofer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Dim max, min As Range
Dim iMax, iMin As Long
Dim w As Range, i As Long
For i =  1  To Doc1.Sentences.Count
  iMax =  0 
  iMin =  100 
  For Each w In Doc1.Sentences(i).Words
    If w <> "" Then
    If Len(w) > iMax Then iMax = Len(w): max = w
    If Len(w) < iMin And Len(w) <>  0  Then iMin = Len(w): min = w
    ListBox1.AddItem "Max = " & max & ", Min = " & min
    End If
  Next w
Next i

Сделела так выдаёт ошибку Type mismatch

Shocker.Pro твой код тоже выдаёт такую ошибку
...
Рейтинг: 0 / 0
21.05.2010, 13:50
    #36641524
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
У меня не выдает. Строку пожалуйста.
...
Рейтинг: 0 / 0
21.05.2010, 13:54
    #36641537
woofer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
Shocker.Pro,

строку не выделяет
...
Рейтинг: 0 / 0
21.05.2010, 13:54
    #36641538
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
На предложения можно не разбивать
Код: plaintext
1.
2.
3.
    Dim w As Range
    For Each w In ThisDocument.Words
        Debug.Print w.Text
    Next
...
Рейтинг: 0 / 0
21.05.2010, 13:56
    #36641546
woofer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
AntonariyНа предложения можно не разбивать


Мне нужно найти в каждом предложении
...
Рейтинг: 0 / 0
21.05.2010, 13:59
    #36641557
woofer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
Ошибка может потому что я вот так документ открываю
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Public Doc1 As Object

Dim d As Object
fileToOpen = Application _
    .GetOpenFilename("Text Files (*.doc), *.doc")
If fileToOpen <> False Then
 
Set d = CreateObject("Word.Application")
Set Doc1 = d.Documents.Open(fileToOpen)
...
Рейтинг: 0 / 0
21.05.2010, 14:28
    #36641636
woofer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
ошибка здесь
Код: plaintext
 For Each w In Doc1.Sentences(i).Words
...
Рейтинг: 0 / 0
21.05.2010, 14:32
    #36641652
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
Гм.
Странно.
Вы из VB объект создаете?

А если попробовать выполнить непосредственно в Ворде, через ThisDocument?
...
Рейтинг: 0 / 0
21.05.2010, 14:33
    #36641653
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
Стоп, я понял.
Ошибка в определении переменной w As Range

Внутри ворда она определяется как вордовский Range
Раз вы открываете откуда-то еще - квалифицируйте тип полностью.
...
Рейтинг: 0 / 0
21.05.2010, 14:52
    #36641721
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
Так по мелочи...

неправильно
Код: plaintext
Dim iMax, iMin As Long

правильно
Код: plaintext
Dim iMax As Long, iMin As Long


и, мне кажется, вряд ли вы хотите, чтобы в лисбоксе у вас оказались ВСЕ слова, а не только максимальные и минимальные. А добавляете вы ВСЕ.
...
Рейтинг: 0 / 0
21.05.2010, 15:09
    #36641794
woofer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim max
Dim min
Dim iMax, iMin As Integer
Dim w As Object, i As Long
For i =  1  To Doc1.Sentences.Count
  iMax =  0 
  iMin =  10 
  For Each w In Doc1.Sentences(i).Words
    'If w <> "" Then
    If Len(w) > iMax Then iMax = Len(w): max = w
    If Len(w) < iMin And Len(w) <>  0  Then iMin = Len(w): min = w
   
    End If
  Next w
ListBox1.AddItem "Max = " & max & ", Min = " & min
Next i

Вот сделал так работает, но почемуто начиная со 2 предложения точки в min записывает
...
Рейтинг: 0 / 0
21.05.2010, 15:36
    #36641897
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
woofer Сделела так выдаёт ошибку Type mismatch
wooferВот сделал так работает,

Может кто-то один будет делать?
...
Рейтинг: 0 / 0
21.05.2010, 16:09
    #36641986
woofer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
Игорь Горбоносwoofer Сделела так выдаёт ошибку Type mismatch


Ну ошибся я
...
Рейтинг: 0 / 0
22.05.2010, 15:01
    #36643094
woofer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim max
Dim min
Dim iMax As Long, iMin As Long
Dim w As Object, i As Long
For i =  1  To Doc1.Sentences.Count
  iMax =  0 
  iMin =  10 
  For Each w In Doc1.Sentences(i).Words
    
    If Len(w) > iMax Then iMax = Len(w): max = w
    If Len(w) < iMin And Len(w) <>  0  Then iMin = Len(w): min = w
   
    
  Next w
ListBox1.AddItem "Max = " & max & ", Min = " & min
Next i

Что сделать чтобы в min не попадали . , ? ! : ;
...
Рейтинг: 0 / 0
22.05.2010, 15:03
    #36643100
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
wooferЧто сделать чтобы в min не попадали . , ? ! : ;

Проверить первый символ (или вообще все символы слова)
Код: plaintext
Like "[A-Za-zА-Яа-яЁё]"
ЕМНИП
...
Рейтинг: 0 / 0
22.05.2010, 16:09
    #36643164
woofer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
Код: plaintext
1.
 b = w Like "[!A-Za-zА-Яа-яЁё]"
    If b = False Then
Сделал так но эффекта никакого
...
Рейтинг: 0 / 0
22.05.2010, 16:18
    #36643171
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
woofer
Код: plaintext
1.
 b = w Like "[!A-Za-zА-Яа-яЁё]"
    If b = False Then
Сделал так но эффекта никакого

а если так
Код: plaintext
 b = w Not Like "[A-Za-zА-Яа-яЁё]
...
Рейтинг: 0 / 0
22.05.2010, 16:43
    #36643192
woofer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
Такой вариант он даже компилировать не хочет
...
Рейтинг: 0 / 0
22.05.2010, 17:00
    #36643203
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
min и max слово в документе Word
А так:
Код: plaintext
 b = Not w Like "[A-Za-zА-Яа-яЁё]"

просто нет ща под рукой VB
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / min и max слово в документе Word / 25 сообщений из 45, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]