Страница: 1 |
Страница: 1 |
Вопрос: работа с предложениями
Добавлено: 07.07.06 01:34
Автор вопроса: koljan
Дан файл, содержащий текст на русском языке. Найти слово, встречающееся в каждом предложении, или сообщить, что такого слова нет.
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
не получается проверить присутствует ли слово из массива в каждом предложении
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #1
Добавлено: 07.07.06 01:44
s1 = "лялялял ляля слово. траляляля тополя слово."
s2 = "слово"
If Right$(s1, 1) = "." Then s1 = Left$(s1, Len(s1) - 1)
Dim tmpArr() As String: tmpArr = Split(s1, "."
For i = 0 To UBound(tmpArr)
If InStr(1, tmpArr(i), s2) > 0 Then c = c + 1
Next
If c = UBound(tmpArr) + 1 Then MsgBox Chr$(34) & s2 & Chr$(34) & " встречается в каждом предложении"
End Sub
Номер ответа: 2
Автор ответа:
koljan
Вопросов: 2
Ответов: 4
Профиль | | #2
Добавлено: 07.07.06 02:32
а конкретнее для моей задачи
Номер ответа: 3
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #3
Добавлено: 07.07.06 02:53
ну содержимое *.doc загрузи в текстовую переменную и будет тебе для твоей задачи
Номер ответа: 4
Автор ответа:
koljan
Вопросов: 2
Ответов: 4
Профиль | | #4
Добавлено: 07.07.06 16:02
Вопрос решён
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
Rem îôîðìëåíèå öèêëîâ for äëÿ basic
Sub basic()
Dim ot As Integer
Documents.Open ("c:\temp\vba.doc"
Documents(1).Select
Selection.Copy
Documents(2).Range.Paste
Documents(2).Activate
ot = 0
For i = 1 To ActiveDocument.Paragraphs.Count
ActiveDocument.Paragraphs(i).Range.Words(1).Select
If Trim(ActiveDocument.Paragraphs(i).Range.Words(1)) = "For" Then
ot = ot + 1
End If
If Trim(ActiveDocument.Paragraphs(i).Range.Words(1)) = "Next" Then
ot = ot - 1
'ActiveDocument.Paragraphs(i + 1).Range.Text = String(ot, Chr(9)) + ActiveDocument.Paragraphs(i + 1).Range.Text
If ot < 0 Then
ot = 0
End If
End If
If Trim(ActiveDocument.Paragraphs(i).Range.Words(1)) = "For" Then
ActiveDocument.Paragraphs(i).Range.Text = String(ot - 1, Chr(9)) + ActiveDocument.Paragraphs(i).Range.Text
Else
ActiveDocument.Paragraphs(i).Range.Text = String(ot, Chr(9)) + ActiveDocument.Paragraphs(i).Range.Text
End If
If Trim(ActiveDocument.Paragraphs(i).Range.Words(1)) = "Next" Then
ActiveDocument.Paragraphs(i - 1).Range.Text = String(ot, Chr(9)) + ActiveDocument.Paragraphs(i - 1).Range.Text
End If
Next
End Sub
Номер ответа: 5
Автор ответа:
koljan
Вопросов: 2
Ответов: 4
Профиль | | #5
Добавлено: 07.07.06 16:04
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
вот такой. код я немного поспешил
P.S.
можно ли здесь свои сообщения редактировать