Страница: 1 |
Страница: 1 |
Вопрос: Макрос word
Добавлено: 25.10.09 01:06
Автор вопроса: Abiron
Есть word файл с макросом syn. Подскажите, как можно открыть этот ворд файл, записать сюда текст, выполнить макрос, после чего считать текст из него? Очень нужно. Или подскажите, как этом макрос адаптировать под vb6?
MsgBox synList
On Error Resume Next
'GoTo ErrorHandler
Randomize
Dim re As RegExp
Set re = CreateObject("VBScript.RegExp")
Êîëè÷åñòâîÏðîïóñêîâ = 1
For Each curWord In ActiveDocument.Words
w = Trim(curWord.Text)
' Ïðîâåðèòü, ÿâëÿåòñÿ ëè ñëîâî ñëîâîì
re.Pattern = "^[\-à-ÿÀ-ߨ¸a-zA-Z]*$"
If re.Test(w) Then
If passer < 1 Then
If z = 0 Then
'passer = Int(2 + Rnd * 3)
passer = 1 + Êîëè÷åñòâîÏðîïóñêîâ
Debug.Print w
Dim mySi As SynonymInfo
Set mySi = curWord.SynonymInfo
If mySi.MeaningCount > 0 Then
z = 1
synList = mySi.SynonymList(Meaning:=1)
' èíäåêñ ñëó÷àéíîãî ýëåìåíòà
ind = Int(Rnd * UBound(synList)) + 1
'ind = 1
s = synList(ind)
' Åñëè â ïîëó÷åííîì ñèíîíèìå åñòü ïîñòîðîííèé ñèìâîë, òîãäà ñèíîíèì íå êàíàåò
re.Pattern = "[^\-à-ÿÀ-ߨ¸a-zA-Z]"
If Not re.Test(s) Then
curWord.Text = s & " "
curWord.Bold = True
Else
z = countSpaces(w)
End If
Debug.Print s
End If
Set mySi = Nothing
Else
z = z - 1
End If
End If
End If
passer = passer - 1
ErrorHandler:
Next
End Sub
Function countSpaces(w)
c = 0
For i = 1 To Len(w)
If Mid(w, i, 1) = " " Then
c = c + 1
End If
Next
countSpaces = c
End Function
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #1
Добавлено: 26.10.09 16:19
Есть раздел VBA, в котором про ворд ексель и т.п. с макросами.
Чтобы открыть файл надо 1. Установить в своей проге ссылку на объектную библиотеку Ворд.
2. Типа создать переменную Dim MyDoc as Word.Document 3. Нацарапать Set MyDoc = Word.Application.Documents.Open("Путь к документу"
Считать текст - что-то типа TmpStr = MyDoc.Range.text
Выполнить макрос - типа Call Word.Application.Run(.......) 'F1-расскажет больше и покажет примеры. Слово Call лучше не игнорировать - могут быть проблемы с параметрами.
Номер ответа: 2
Автор ответа:
Abiron
Вопросов: 30
Ответов: 62
Профиль | | #2
Добавлено: 26.10.09 17:11
Спс, очень доходчиво. Только я сам разобрался. Решил создавать ворд документ и переделал этот макрос по vb.
Номер ответа: 3
Автор ответа:
Abiron
Вопросов: 30
Ответов: 62
Профиль | | #3
Добавлено: 26.10.09 17:14
По моему это всетаки попрос по vb6 а не по vba. И в ответе твоем код для vb а не vba
Макрос и ворд-объекты над которыми совершается действия с помощью инструменя vb. Поэтому, имхо, тема уместнее здесь.