Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [VBA] Найти слово, встречающееся в каждом предложении 
V
    Опции темы
koljan
Дата 27.6.2006, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


VIP
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 18.12.2005
Где: г.Архангельск

Репутация: 1
Всего: 1



Дан файл, содержащий текст на русском языке. Найти слово, встречающееся в каждом предложении, или сообщить, что такого слова нет. 

можно ли разбить текст на предложения стандартными средствами?
 


--------------------
PM MAIL ICQ   Вверх
nworm
Дата 28.6.2006, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: нет
Всего: 8



Да. В Word-е есть
Sentences Collection Object.  

Это сообщение отредактировал(а) nworm - 28.6.2006, 00:22
PM MAIL WWW   Вверх
koljan
Дата 28.6.2006, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


VIP
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 18.12.2005
Где: г.Архангельск

Репутация: 1
Всего: 1



Цитата(nworm @  28.6.2006,  00:21 Найти цитируемый пост)
Да. В Word-е есть
Sentences Collection Object.  

а по-подробнее 


--------------------
PM MAIL ICQ   Вверх
nworm
Дата 28.6.2006, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: нет
Всего: 8



Там же help есть. В VBA заходишь и читаешь. 
В меню Worda:
Сервис->Макрос->Редактор Visual Basic

Если чего непонятно, пиши.  

Это сообщение отредактировал(а) nworm - 28.6.2006, 22:07
PM MAIL WWW   Вверх
koljan
Дата 4.7.2006, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


VIP
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 18.12.2005
Где: г.Архангельск

Репутация: 1
Всего: 1



Цитата(nworm @  28.6.2006,  22:04 Найти цитируемый пост)
Если чего непонятно, пиши.

не понятно 
не знаю как алгоритм сделать как сравнивать эти предложения
 


--------------------
PM MAIL ICQ   Вверх
nworm
Дата 5.7.2006, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: нет
Всего: 8



Та штука, которую я написал, - Range-объект. У него есть свойство Words (слова по порядочку).
Алгоритм такой: 
1) получаешь массив M1 слов 1-го предложения
Код

Set myRange = ActiveDocument.Sentences(1)
и т.д.

4) Проверяешь есть ли во втором предложении те слова, которые есть в M1. И так до конца документа.  

Это сообщение отредактировал(а) nworm - 5.7.2006, 14:04
PM MAIL WWW   Вверх
koljan
Дата 5.7.2006, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


VIP
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 18.12.2005
Где: г.Архангельск

Репутация: 1
Всего: 1



Цитата(nworm @  5.7.2006,  14:03 Найти цитируемый пост)
1) получаешь массив M1 слов 1-го предложения

с массивом ясно мне не понятно как с другими предложениями сравнивать и чесли слово совпадёт что делать 

я тут немного написал
Код

Public Sub lab5()
Dim str As String
Dim masSL(1 To 30) As String
Dim masSLREZ(1 To 30) As String
Documents.Open ("c:\temp\lab5.doc")
Documents(1).Select
Selection.Copy
Documents(2).Range.Paste
Documents(2).Activate
Documents(2).Select
For i = 1 To ActiveDocument.Sentences(1).Words.Count
   masSL(i) = ActiveDocument.Sentences(1).Words(i)
Next
k = 2
For j = LBound(masSL) To UBound(masSL)
   If Trim(masSL(j)) Like ActiveDocument.Sentences(2).Words(j) Then
      masSLREZ(j) = masSL(j)
      
   End If
 
Next
  
End Sub

но что то  с if не то 

Это сообщение отредактировал(а) koljan - 5.7.2006, 15:24


--------------------
PM MAIL ICQ   Вверх
koljan
Дата 7.7.2006, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


VIP
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 18.12.2005
Где: г.Архангельск

Репутация: 1
Всего: 1



вопрос решён
Код

Public Sub lab5()
Dim str As String
Dim stroka As String
Dim masSL(1 To 20) As String
Dim masSLREZ(1 To 20) As String
Documents.Open ("c:\temp\lab5.doc")
Documents(1).Select
Selection.Copy
Documents(2).Range.Paste
Documents(2).Activate
'Documents(2).Select
For i = 1 To ActiveDocument.Sentences(1).Words.Count
   masSL(i) = ActiveDocument.Sentences(1).Words(i)
Next
k = 2
For i = 2 To ActiveDocument.Sentences.Count
   For j = LBound(masSL) To UBound(masSL)
     For Each w In ActiveDocument.Sentences(i).Words
     
      If Trim(masSL(j)) Like Trim(CStr(w)) Then
        masSLREZ(j) = masSL(j)
      End If
      Next
   Next j
   For k = 1 To 20
        masSL(k) = ""
   Next
   For k = 1 To 20
        masSL(k) = masSLREZ(k)
   Next
   For k = 1 To 20
        masSLREZ(k) = ""
   Next
   
   
Next
For p = 1 To 20
   If (Trim(masSL(p)) = ".") Or (Trim(masSL(p)) = ",") Then
      masSL(p) = ""
   End If
Next p

For y = 1 To 20
       stroka = stroka + " " + masSL(y)
Next y
If Trim(stroka) = "" Then
   MsgBox "Нет таких слов"
   Else
MsgBox Trim(stroka)
End If
End Sub
  

Это сообщение отредактировал(а) koljan - 7.7.2006, 15:04


--------------------
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0468 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.