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

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

Ну а в каждом предложении - коллекцию Words
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36640389
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ща поковырял объектную модель - это не совсем коллекции...
Вот так работает нормально:
Код: 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
min и max слово в документе Word
    #36641514
woofer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
min и max слово в документе Word
    #36641524
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня не выдает. Строку пожалуйста.
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36641537
woofer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

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


Мне нужно найти в каждом предложении
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36641557
woofer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ошибка может потому что я вот так документ открываю
Код: 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
min и max слово в документе Word
    #36641636
woofer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ошибка здесь
Код: plaintext
 For Each w In Doc1.Sentences(i).Words
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36641652
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гм.
Странно.
Вы из VB объект создаете?

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

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

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

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


и, мне кажется, вряд ли вы хотите, чтобы в лисбоксе у вас оказались ВСЕ слова, а не только максимальные и минимальные. А добавляете вы ВСЕ.
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36641794
woofer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
min и max слово в документе Word
    #36641897
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
woofer Сделела так выдаёт ошибку Type mismatch
wooferВот сделал так работает,

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


Ну ошибся я
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36643094
woofer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
min и max слово в документе Word
    #36643100
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wooferЧто сделать чтобы в min не попадали . , ? ! : ;

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

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

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


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