1

Тема: Как обойти ограничение при автозамене

Здравствуйте, уважаемые.
Кто знает как можно обойти ограничение /Word 2003 2007/,
которое обрезает acEntry.Value (до 255 символов),
при ручном вводе извлекается и больше 255 символов...
макрос:
Sub Макрос()
' 04-11-2010 пример как достать СТРОКУ АВТОЗАМЕНЫ - поиск по значению
j = 1
l = AutoCorrect.Entries.Count
Documents.Add DocumentType:=wdNewBlankDocument
Selection.TypeText Text:=l
Selection.TypeParagraph
MsgBox (l)
For Each acEntry In AutoCorrect.Entries
l = j & " -> " & acEntry.Name & " -> " & acEntry.Value
m = Len(acEntry.Value)
Selection.TypeText Text:=m & " " & l
Selection.TypeParagraph
j = j + 1
Next acEntry
End Sub

2

Re: Как обойти ограничение при автозамене

Используя AddRichText:

    Application.Documents.Add
    Selection.Text = String(500, "1")
    AutoCorrect.Entries.AddRichText _
        Name:="1", Range:=Selection.Range
Макросы под заказ и готовый пакет - mtdmacro.ru

3

Re: Как обойти ограничение при автозамене

Вождь пишет:

Используя AddRichText:

    Application.Documents.Add
    Selection.Text = String(500, "1")
    AutoCorrect.Entries.AddRichText _
        Name:="1", Range:=Selection.Range

Спасибо огромное. Это создание автозамены одной единицы на 500 штук.

Вопрос был: как в макросе получить доступ ко всем 500?
То есть, как я "ни подползу" к Value - он уже усечен до 255.
AutoCorrect.Entries.Range - такого нет ни метода ни поля,
я уже думаю может как то Value в буфер как RTF перекинуть...
не получается. Помогите - расскажите, это возможно сделать?
А то придется не использовать автозамену,
а лепить какую-нибудь таблицу -
там, кстати, можно будет еще графы
для чего нибудь полезного добавить...

4

Re: Как обойти ограничение при автозамене

Извлечь полный текст можно только через AutoCorrectEntry.Apply
Если в Вашем макросе:

acEntry.Apply Range:=Selection.Range

Если вообще, то надо создать временный документ:

Dim D As Word.Document
Dim ACE As AutoCorrectEntry
Dim S1$, S2$
    
    Set D = Application.Documents.Add '(Visible:=False)
    For Each ACE In AutoCorrect.Entries
        ACE.Apply Range:=D.Range
        S1 = ACE.Name
        S2 = D.Range
        If MsgBox(Prompt:=S1 & vbLf & S2, _
                  Buttons:=vbOKCancel) <> vbOK Then Exit For
        D.Undo
    Next ACE
    D.Close SaveChanges:=False
Макросы под заказ и готовый пакет - mtdmacro.ru

5

Re: Как обойти ограничение при автозамене

Огромное спасибо
великолепно
Наверное, обращусь к Вам с предложением