Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перебор символов в Word

4.1K
24 ноября 2003 года
quant
3 / / 18.06.2003
Здравствуйте.

У меня возникла задача такого рода. Есть документ Ворд. в нём текст набран шрифтами разного размера. Мне нужно уменьшить размер каждого символа по формуле:
новыйразмер=старыйразмер-числопунктовуменьшения
Я накидал что-то вроде
For i = 1 To ActiveDocument.Characters.Count
ActiveDocument.Characters(i).Select
If Selection.Font.Size > Val(stepen) Then
Selection.Font.Size = Selection.Font.Size - Val(stepen)
Label4.Caption = Str$(i)
UserForm1.Repaint
End If
Next i
Но работает жутко долго. Есть ли другой способ?
Заранее спасибо.
459
24 ноября 2003 года
gacol
273 / / 12.02.2003
Цитата:
Originally posted by quant
Здравствуйте.

У меня возникла задача такого рода. Есть документ Ворд. в нём текст набран шрифтами разного размера. Мне нужно уменьшить размер каждого символа по формуле:
новыйразмер=старыйразмер-числопунктовуменьшения
Я накидал что-то вроде
For i = 1 To ActiveDocument.Characters.Count
ActiveDocument.Characters(i).Select
If Selection.Font.Size > Val(stepen) Then
Selection.Font.Size = Selection.Font.Size - Val(stepen)
Label4.Caption = Str$(i)
UserForm1.Repaint
End If
Next i
Но работает жутко долго. Есть ли другой способ?
Заранее спасибо.



Главный тормоз - прерывания внутри цикла (repaint...).
лучше вставь вначале и в конце
Application.ScreenUpdating
И еще - цикл For Each работает быстрее
В общем рекомендую примерно так:

Application.ScreenUpdating = False
For Each c In ActiveDocument.Characters
If c.Font.Size > Val(stepen) Then
c.Font.Size = c.Font.Size - Val(stepen)
End If
Next c
Label4.Caption = Str$(i)
Application.ScreenUpdating = True

4.1K
24 ноября 2003 года
quant
3 / / 18.06.2003
Попробовал. Действительно лучше. Спасибо за совет. А может есть в Ворде готовая такая штука. Пропорциональное уменьшение размера символов?
267
24 ноября 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by quant
Попробовал. Действительно лучше. Спасибо за совет. А может есть в Ворде готовая такая штука. Пропорциональное уменьшение размера символов?



 
Код:
Sub Test
Dim i As Long
    For i = 1 To Val(stepen)
        ActiveDocument.Range.Font.Shrink
    Next i
End Sub


Обратно - Grow.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог