Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Макрос word Добавлено: 25.10.09 01:06  

Автор вопроса:  Abiron
Есть word файл с макросом syn. Подскажите, как можно открыть этот ворд файл, записать сюда текст, выполнить макрос, после чего считать текст из него? Очень нужно. Или подскажите, как этом макрос адаптировать под vb6?

Sub Syn2()
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 + &#202;&#238;&#235;&#232;&#247;&#229;&#241;&#242;&#226;&#238;&#207;&#240;&#238;&#239;&#243;&#241;&#234;&#238;&#226;
        
            Debug.Print w
            Dim mySi As SynonymInfo
            Set mySi = curWord.SynonymInfo
            If mySi.MeaningCount > 0 Then
                z = 1
                synList = mySi.SynonymList(Meaning:=1)
                
                ' &#232;&#237;&#228;&#229;&#234;&#241; &#241;&#235;&#243;&#247;&#224;&#233;&#237;&#238;&#227;&#238; &#253;&#235;&#229;&#236;&#229;&#237;&#242;&#224;
                ind = Int(Rnd * UBound(synList)) + 1
                'ind = 1
                
                s = synList(ind)
                
                ' &#197;&#241;&#235;&#232; &#226; &#239;&#238;&#235;&#243;&#247;&#229;&#237;&#237;&#238;&#236; &#241;&#232;&#237;&#238;&#237;&#232;&#236;&#229; &#229;&#241;&#242;&#252; &#239;&#238;&#241;&#242;&#238;&#240;&#238;&#237;&#237;&#232;&#233; &#241;&#232;&#236;&#226;&#238;&#235;, &#242;&#238;&#227;&#228;&#224; &#241;&#232;&#237;&#238;&#237;&#232;&#236; &#237;&#229; &#234;&#224;&#237;&#224;&#229;&#242;
                re.Pattern = "[^\-&#224;-&#255;&#192;-&#223;&#168;&#184;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. Поэтому, имхо, тема уместнее здесь.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам