powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / min и max слово в документе Word
45 сообщений из 45, показаны все 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
min и max слово в документе Word
    #36643353
woofer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да он вообще чё то этот Like не робит
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36643367
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wooferДа он вообще чё то этот Like не робит

все там робит
Код: plaintext
1.
2.
3.
4.
5.
?Not "s" Like "[A-Za-zА-Яа-яЁё]"
False
?Not "Ё" Like "[A-Za-zА-Яа-яЁё]"
False
?Not "!" Like "[A-Za-zА-Яа-яЁё]"
True

это вы в логике навертели лишнего. А так как полностью текст программы с Like-ом вы не привели, сказать где - не могу.
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36643399
woofer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так понимаю это нужно слово по буквам перебирать. Сразу слово сравнить я не смогу?
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36643405
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wooferЯ так понимаю это нужно слово по буквам перебирать. Сразу слово сравнить я не смогу?

нет. Если только не размножите шаблон столько раз, сколько букв в слове. Еще в него надо включть разного рода дефисы...

Но я считаю, что достаточно проверить первую букву слова, чтобы принять решение, считать это словом или нет.
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36643423
woofer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro
Но я считаю, что достаточно проверить первую букву слова, чтобы принять решение, считать это словом или нет.

Вот спасибо тебе большое. Проверить первый символ то что надо.
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36643445
woofer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот ещё вопрос. Я открываю файлы вот так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public d As Object, Doc1 As Object

Private Sub CommandButton1_Click()

fileToOpen = Application _
    .GetOpenFilename("Text Files (*.doc), *.doc")
If fileToOpen <> False Then
    TextBox1 = fileToOpen
Set d = CreateObject("Word.Application")
 
Set Doc1 = d.Documents.Open(fileToOpen)

Если я открыл несколько файло , как закрыть тот который мне не нужен и как запретить повторное открытие файла.
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36643453
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wooferIf fileToOpen <> False

Почему вы текст сравниваете с лоигческой переменной? вы php-шник?

wooferSet Doc1 = d.Documents.Open(fileToOpen)
как закрыть

Вы не поверите. Методом Close.

wooferкак запретить повторное открытие файла.

Ну надо вести массив или коллекцию ранее открытых файлов и проверять, не открывался ли он ранее.
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36643474
woofer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProwooferIf fileToOpen <> False

Почему вы текст сравниваете с лоигческой переменной? вы php-шник?


Да какой я php-шник... Я просто в VBA никогда не работал, а этот пример открытия нашёл.

Shocker.ProВы не поверите. Методом Close.

так не получилось, закрыл так
Код: plaintext
1.
d.Quit
Set d = Nothing
Но мне это не подходит. Если я открою например 3 документа как закрыть 2 ?
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36643481
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wooferЯ просто в VBA никогда не работал, а этот пример открытия нашёл.
"Впредь избегайте этих мест" (с)анекдот

Shocker.Proтак не получилось, закрыл так
...
Но мне это не подходит. Если я открою например 3 документа как закрыть 2 ?
Что значит "не получилось"? Не надо оставлять место для догадок.
Documents("документ.doc").Close - не получается?
Как писали, какая ошибка? Вы так до второго пришествия консультироваться будете.
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36643486
woofer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор Shocker.Pro Documents("документ.doc").Close
Documents - Sub or Function not defined
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36643494
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wooferDocuments - Sub or Function not defined

это ваш код:
Код: plaintext
Set Doc1 = d.Documents.Open(fileToOpen)

Ну сложите 2 и 2 сами, ну пожалуйста.
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36643504
woofer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
d.Documents(fileToOpen).Close
так?
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36643506
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
woofer
Код: plaintext
d.Documents(fileToOpen).Close
так?

так.
Только почему fileToOpen?
Последний файл у вас и так живет в Doc1, вы его и так можете закрыть методом Close. А если требуется несколько каких-то других файлов то и имена их надо брать из другого места.
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36643510
woofer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
d.Documents(fileToOpen).Close
Но документ всё равно не закрывается
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36643512
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
woofer
Код: plaintext
d.Documents(fileToOpen).Close
Но документ всё равно не закрывается

Ну что я могу сказать? у меня закрывается.
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36643517
woofer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public d As Object, Doc1 As Object

Private Sub CommandButton1_Click()

fileToOpen = Application _
    .GetOpenFilename("Text Files (*.doc), *.doc")
If fileToOpen <> False Then
Set d = CreateObject("Word.Application") 
Set Doc1 = d.Documents.Open(fileToOpen)
   TextBox1 = fileToOpen
d.Documents(fileToOpen).Close

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

Кто?
В процессах вы можете видеть только Word, а не документ.
Вы же просили закрыть документ, а не Word. Или не понимаете, в чем разница?
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36643529
woofer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это я понимаю. Но если я закрыл документ нафига мне нужен Word в процессах.
И если я открываю ещё один документ то появляется и ещё один процесс Word.
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36643530
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wooferИ если я открываю ещё один документ то появляется и ещё один процесс Word.

Это необязательно. Если вы не создаете новый объект Word.Application, то и других вордов в процессах появляться не будет. Открывайте все документы одним вордом, закрывайте соответственно Close, а когда закончите обработку, закроете Ворд через Quit.
...
Рейтинг: 0 / 0
min и max слово в документе Word
    #36643536
woofer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо понял. Но думаю завтра будут новые вопросы...
Спокойной ночи!
...
Рейтинг: 0 / 0
45 сообщений из 45, показаны все 2 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / min и max слово в документе Word
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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