Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2009, 13:28   #1
Dmitry_86
Новичок
Джуниор
 
Регистрация: 02.02.2009
Сообщений: 1
По умолчанию Единый размер шрифта формул

Здравствуйте!!!

Вопрос у меня следующий: в тексте имеется много формул, и у каждой свой стиль форматирования и свой размер шрифта. Мне нужно сделать формулы одинаковыми. Со стилем вроде разобрался, а КАК СДЕЛАТЬ ЕДИНЫЙ РАЗМЕР ШРИФТА (чтобы вручную не изменять его для каждой формулы) не знаю. Надеюсь на ваши советы.

Заранее благодарю
Dmitry_86 вне форума Ответить с цитированием
Старый 17.09.2009, 14:18   #2
garik64
Форумчанин
 
Регистрация: 09.07.2009
Сообщений: 111
По умолчанию

Цитата:
Сообщение от Dmitry_86 Посмотреть сообщение
Со стилем вроде разобрался, а КАК СДЕЛАТЬ ЕДИНЫЙ РАЗМЕР ШРИФТА
Ответ уже в вопросе. Назначить стилю размер шрифта.
garik64 вне форума Ответить с цитированием
Старый 17.09.2009, 20:58   #3
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Мы говорим о формулах Microsoft Equation? Насколько я помню, стиль формул задается один раз. Если все формулы разные, то нужно установить в одной формуле те параметры стиля и размера шрифта, которые нужны, а потом все остальные формулы просто открыть и закрыть. Они обновятся сами.
Вот так это можно сделать программно:
Код:
Sub UpdateMSEquation()
  Dim oInShp As InlineShape
  
  For Each oInShp In ActiveDocument.InlineShapes
    'Если это формула, то открываем ее для редактирования
    If oInShp.OLEFormat.ClassType = "Equation.3" Then oInShp.OLEFormat.DoVerb -5
  Next
End Sub
После обновления последняя формула останется открытой
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 27.12.2012, 11:48   #4
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Оказалось, тема еще актуальна, но вышеописанные метод уже не работает - получаем много незакрытых окон редактора Equation. Изменил подход, кому интерасно:
Код:
Public Sub Формулы_Equation_Обновить_формат()
' вручную исправьте стили и настройки одной формулы Equation
' и запустите данный макрос, для обновления формата остальных
    
    On Error Resume Next
    
Dim F As Word.Field
Dim N1 As Long, N2 As Long

    Application.ScreenUpdating = False
    N1 = 0: N2 = 0
    For Each F In ActiveDocument.Fields
        If F.Type <> Word.wdFieldEmbed Then
        ElseIf Not (F.OLEFormat.ClassType Like "Equation.*") Then
        Else
            N1 = N1 + 1
            Err.Clear
            F.OLEFormat.ConvertTo ClassType:=F.OLEFormat.ClassType
            If Err.Number <> 0 Then ' ошибка
                N2 = N2 + 1
                Application.ScreenUpdating = True
                F.Select
                Select Case MsgBox(Prompt:="Ошибка! " & vbLf & vbLf & _
                                           "Нет возможности обработать формулу типа: " & vbLf & _
                                           F.OLEFormat.ClassType & vbLf & vbLf & _
                                           "Продолжить?", _
                                   Buttons:=VBA.vbCritical + VBA.vbYesNo)
                    Case VBA.vbOK, VBA.vbYes
                    Case Else: Exit For
                End Select
                Application.ScreenUpdating = False
            End If
        End If
    Next F
    Application.ScreenUpdating = True
    StatusBar = "Обработано формул: " & N1 & ", ошибок: " & N2
    
End Sub
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 16.02.2017, 13:33   #5
kolipass
Новичок
Джуниор
 
Регистрация: 04.03.2011
Сообщений: 1
По умолчанию

Решил немного усовершенствовать ваш скрипт прогрессом в статус баре. На 10000 формульном документе очень удобно. Да здравствует VBA!

Код:
Sub updateFormulsTextSyle()
 On Error Resume Next
    
Dim F As Word.Field
Dim N1 As Long, N2 As Long

    Application.ScreenUpdating = False
    N1 = 0: N2 = 0: N3 = ActiveDocument.Fields.Count
    percent = ""
    
    For Each F In ActiveDocument.Fields
        If F.Type <> Word.wdFieldEmbed Then
        ElseIf Not (F.OLEFormat.ClassType Like "Equation.*") Then
        Else
            N1 = N1 + 1
            Err.Clear
            F.OLEFormat.ConvertTo ClassType:=F.OLEFormat.ClassType
            If Err.Number <> 0 Then ' ошибка
                N2 = N2 + 1
                Application.ScreenUpdating = True
                F.Select
                Select Case MsgBox(Prompt:="Ошибка! " & vbLf & vbLf & _
                                           "Нет возможности обработать формулу типа: " & vbLf & _
                                           F.OLEFormat.ClassType & vbLf & vbLf & _
                                           "Продолжить?", _
                                   Buttons:=VBA.vbCritical + VBA.vbYesNo)
                    Case VBA.vbOK, VBA.vbYes
                    Case Else: Exit For
                End Select
                Application.ScreenUpdating = False
            End If
        End If
        
        tempP = Format(N1 / N3 * 100, "0")
        
        If Not percent = tempP Then
            percent = tempP
            StatusBar = "Обработано: " & percent & "%"
        End If
        
    Next F
    Application.ScreenUpdating = True
    StatusBar = "Обработано формул: " & N1 & ", ошибок: " & N2


    
End Sub
https://gist.github.com/kolipass/e53...7d3bf8d30730b7
kolipass вне форума Ответить с цитированием
Старый 22.12.2017, 10:54   #6
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

Интересное обсуждение
Одного не понимаю - зачем эти пляски с переоткрытием формул, если в Math type и так есть функция Format Equations ? Она отлично форматирует все формулы в документе.
Вот если бы разобраться как автозамену в Math type скриптово делать...
Изображения
Тип файла: png Clipboard03.png (37.2 Кб, 452 просмотров)
bdfy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
размер шрифта varelik Общие вопросы Delphi 10 16.09.2009 13:58
Размер шрифта в WordArt Diego__ Microsoft Office Word 3 01.09.2009 11:59
Как установить тип и размер шрифта к документу? Alexpoliv Microsoft Office Word 2 23.08.2009 22:06
Размер шрифта Gorychev HTML и CSS 6 25.05.2008 11:42
Тип и размер шрифта rusif Помощь студентам 1 19.12.2007 17:48