1

Тема: Самопроизвольное изменение размера объекта-формулы

Коллеги! Уже долго борюсь со следующей проблемой. В тексте Word 2007 много «внутритекстовых» формул, созданных в Equation 3.0. По мере работы с текстом (перенос с компьютера на компьютер) медленно «уплывает» масштаб объекта-формулы и она становиться меньше или больше основного текста. Пробовал разные комбинации опций «сохранять пропорции», «относительно исходного размера». К сожалению, ничего не помогло. Может быть у кого-то имеется решение. Заранее благодарен.

2

Re: Самопроизвольное изменение размера объекта-формулы

Могу посоветовать установить нужный размер в одной формуле, а затем пробежаться по остальным с помощью этого макроса.
Или я неправильно понял вопрос?

Лучше день потерять — потом за пять минут долететь!

3

Re: Самопроизвольное изменение размера объекта-формулы

Попробую. Однако проблема, видимо, не в Equation, а в том, как Word обрабатывает объекты, включенные в текст. Такое впечатление, что он слегка меняет масштаб с какой-то своей целью. Когда масштаб 99 % вместо 100 %, то это не заметно. Появляются проблемы с течением времени, когда разница возрастает до заметных размеров.

4

Re: Самопроизвольное изменение размера объекта-формулы

viter.alex
Каким редактором должны быть набраны формулы, чтобы можно было "пробежаться по них с помощью этого макроса"?

5

Re: Самопроизвольное изменение размера объекта-формулы

Преподаватель пишет:

Такое впечатление, что он слегка меняет масштаб с какой-то своей целью.


Была однажды подобная проблема - справиться тоже не смог.
При просмотре текстового документа на другом компьютере (версия Word
была  одна и та же)  примерно через тридцать страниц одна строчка текста переезжала на следующую страницу.

6

Re: Самопроизвольное изменение размера объекта-формулы

Хочу вновь поднять данную тему.
Word 2013. Создаю формулы в Equation.3.
Так вот проблема такая же. Со временем при работе с документом сбиваются размеры формул, как объектов внедренных в документ. Чтобы вернуть прежние размеры приходится командой "Формат объекта..." сбрасывать размеры. Причем увеличение / уменьшение  высоты и длины Word совершает непропорциональное.
Также изменяются размеры связанных объектов, вставленных как рисунок. Но их размеры обычно в пределах +/- 1% изменяются - не так критично.
Вроде в поле { EMBED Equation.3 } можно добавить ключ \*MERGEFORMAT, который "Применяет установленные ранее размеры или обрезку к обновленному внедренному объекту. Чтобы сохранить установленные размеры или обрезку внедренного объекта, не удаляйте этот ключ."
Как думаете поможет?
В doc документах таких проблем нет. Создал формулу и если самому не растягивать, то размеры сохраняются 100%.

Предложенный макрос данную проблему не решает (он для применения одного стиля оформления в формулах документа).
Можно создать макрос, который для объектов Equation.3 в документах сбрасывал ширину и высоту на исходные размеры?

7

Re: Самопроизвольное изменение размера объекта-формулы

Автоматическое преобразование/исправление/приведение к единому виду/прощелкивание формул Equation 3.0.

Это не очень изящное решение, но я пользуюсь макросом TransformSelectedEquations, который приведен ниже. Надо выделить фрагмент текста и выполнить макрос. Все формулы Equation 3.0, которые оказались в выделении будут "прощелканы" и их размеры исправлены. Перед выполнением макроса надо (!) один раз прощелкать любую формулу, иначе стили могут быть выставлены неверными.

Насчет макроса, поскольку вам не нужно менять стили формул, то надо закоментировать пять строк после Do Until. После этого в цикле останется только две строки установки размеров. Думаю, сработает, но проверять было лень.

Примечание - Недостаток макроса в том, что он работает через поиск и замену. Думаю можно сделать умнее, использовать конструкции типа таких:

    With ActiveDocument
        For i = .Fields.Count To 1 Step -1
          With .Fields(i)
            If .Type = wdFieldRef Then
              If varColor <> wdNoHighlight Then
                ActiveDocument.Fields(i).Select
                Selection.Range.HighlightColorIndex = varColor ' выделяем цветом
              End If
              .Unlink
            End If
          End With
        Next
      End With

но я не заморачивался, потому что меня и так устраивает.

Вот макрос:


Sub TransformSelectedEquations()
' преобразовать выделенные формулы
' "Прощелкать" формулы, которые попали в выделение
    
'''''''' Начало первого блока прокрутки
Dim lngVerticalScroll
Dim k As Long, nk As Long
  k = 0 'счетчик
  nk = 0 'число кликов, которое потребовалось, чтобы изменить прокрутку на 1%
  
  lngVerticalScroll = ActiveWindow.VerticalPercentScrolled 'исходная прокрутка документа в процентах
    
  If lngVerticalScroll < 100 Then
    'если документ прокручен менее чем на 100%
    Do
      ActiveWindow.ActivePane.SmallScroll Down:=1 'прокручиваем вниз на один клик по кнопке на полосе прокрутки
      k = k + 1
      If ActiveWindow.VerticalPercentScrolled > lngVerticalScroll Or k >= 9999 Then
        'если процент прокрутки увеличился, либо было 9999 кликов (это защита от зацикливания) _
        Думаю, значения 9999 хватит для документа на несколько тысяч страниц.
        nk = k
        Exit Do
      End If
    Loop
  ElseIf lngVerticalScroll = 100 Then
    'если документа прокручен на 100%
    Do
      ActiveWindow.ActivePane.SmallScroll Down:=-1 'прокручиваем ВВЕРХ на один клик по кнопке на полосе прокрутки
      k = k + 1
      If ActiveWindow.VerticalPercentScrolled < lngVerticalScroll Or k >= 9999 Then
        'если процент прокрутки УМЕНЬШИЛСЯ
        'проверка на k >= 9999 тут наверно лишняя, но, на всякий случай, пусть будет
        nk = k
        Exit Do
      End If
    Loop
  End If
'''''''' Конец первого блока прокрутки
    
Dim myRange As Range
Dim a, b
    a = Selection.Range.Start ' левая граница выделения
    b = Selection.Range.End ' правая граница выделения
    
    Set myRange = ActiveDocument.Range(Start:=a, End:=b) 'сохраняем положение выделения
    
    ActiveWindow.View.ShowFieldCodes = True ' включение отображения кодов полей
    
    Selection.Find.ClearFormatting
    With Selection.Find 'настройка опций поиска
        .text = "^d EMBED Equation.3" '^d  - означает поле
        .Replacement.text = ""
        .Forward = True
        .Wrap = wdFindStop ' останавливаем поиск в конце
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
        
    Do Until Selection.Find.Execute = False Or Selection.Range.End >= b
        If Selection.Type = wdSelectionShape Then
            Selection.ShapeRange(1).ConvertToInlineShape.Select
        End If
        Selection.InlineShapes(1).OLEFormat.ConvertTo ClassType:="Equation.3", _
            DisplayAsIcon:=False
        
          'принудительно делаем ширину и высоту 100%, на всякий случай.
        Selection.InlineShapes(1).ScaleWidth = 100
        Selection.InlineShapes(1).ScaleHeight = 100
        
    Loop
    
    ActiveWindow.View.ShowFieldCodes = False ' выключение отображения кодов полей
    
    Call ClearFindDialog ' очистить поиск ДОБАВИЛ ЭТО НЕДАВНО
    myRange.Select ' выделяем исходное выделение
    
'''''''' Начало ВТОРОГО блока прокрутки
    'Восстанавливаем исходную прокрутку документа. _
    Два раза потому, что с первого раза не всегда срабатывает почему-то. _
    Кроме того исходная прокрутка восстанавливается с большой погрешностью, поскольку значение округляется до целых.
  ActiveWindow.VerticalPercentScrolled = lngVerticalScroll
  ActiveWindow.VerticalPercentScrolled = lngVerticalScroll
  
  k = 0 'инициализация счетчика
  If lngVerticalScroll < 100 And nk < 9999 Then
    'если исходная прокрутка была менее 100% и в первом блоке прокрутки удалось увеличить процент прокрутки
    Do
      'прокручиваем вниз по клику до тех пор пока не увеличим прокрутку на 1% (число кликов может отличаться от nk)
      ActiveWindow.ActivePane.SmallScroll Down:=1 'прокручиваем вниз на один клик по кнопке на полосе прокрутки
      k = k + 1
      If ActiveWindow.VerticalPercentScrolled > lngVerticalScroll Then 'Or k >= 9999 Then
          'когда процент прокрутки увеличится, прокручиваем назад на ранее запомненное число nk, _
          чтобы вернуться в к исходной прокрутке с высокой точнотью. _
          Условие Or k>=9999 тут лишнее, поскольку оно фактически есть выше (And nk < 9999).
        ActiveWindow.ActivePane.SmallScroll Down:=-nk 'прокручиваем назад ВВЕРХ
        Exit Do
      End If
    Loop
  ElseIf lngVerticalScroll = 100 And nk < 9999 Then
    'если исходная прокрутка была 100% и в первом блоке прокрутки удалось УМЕНЬШИТЬ процент прокрутки
    Do
      ActiveWindow.ActivePane.SmallScroll Down:=-1 'прокручиваем ВВЕРХ на один клик по кнопке на полосе прокрутки
      k = k + 1
      If ActiveWindow.VerticalPercentScrolled < lngVerticalScroll Then
        'когда процент прокрутки УМЕНЬШИТСЯ, прокручиваем назад на ранее запомненное число nk
        ActiveWindow.ActivePane.SmallScroll Down:=nk 'прокручиваем назад ВНИЗ
        Exit Do
      End If
    Loop
  End If
'''''''' Конец ВТОРОГО блока прокрутки

'    Selection.MoveLeft Unit:=wdCharacter, Count:=1 ' это действие лучше не делать
End Sub



Sub ClearFindDialog()
' Очистиль поиск
'''    Selection.WholeStory
'''    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.Find.ClearFormatting
    With Selection.Find
        .text = "" ' ищем ничего
        .Replacement.text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
End Sub
Мой шаблон/макросы для автоматической нумерации Word 2003, 2007, 2010 и т.д. (стили, названия, перекрестные ссылки, LISTNUM). Делюсь: http://vk.com/club_alex_bir

8

Re: Самопроизвольное изменение размера объекта-формулы

Спасибо за макрос. Размеры формул 100% на 100% - в идеале.
Я в макросах не разбираюсь. Если не очень сложно, можете лишнее удалить под мою задачу?
Второй макрос ClearFindDialog обязательно использовать?

9

Re: Самопроизвольное изменение размера объекта-формулы

Ладно, вот, все то же самое, только закоментировал пять упомянутых строк. Теперь макрос не трогает стили, а только размеры сбрасывает. Кстати, размеры на самом деле устранавливаются с погрешностью (до 1-2% иногда), но это особенность Ворда, и с макросами это никак не связано.

Второй макрос ClearFindDialog это процедура для того чтобы обнулить строку поиска (CTRL+F), иначе там останется текст "^d EMBED Equation.3", который искался. Т.е. эта процедура не особо нужна, но полезна. Можно вместо Sub ClearFindDialog() написать Private Sub ClearFindDialog(), чтобы эта процедура не была видна в списке макросов (я так и сделал в коде ниже).

Sub TransformSelectedEquations()
' преобразовать выделенные формулы
' "Прощелкать" формулы, которые попали в выделение
    
'''''''' Начало первого блока прокрутки
Dim lngVerticalScroll
Dim k As Long, nk As Long
  k = 0 'счетчик
  nk = 0 'число кликов, которое потребовалось, чтобы изменить прокрутку на 1%
  
  lngVerticalScroll = ActiveWindow.VerticalPercentScrolled 'исходная прокрутка документа в процентах
    
  If lngVerticalScroll < 100 Then
    'если документ прокручен менее чем на 100%
    Do
      ActiveWindow.ActivePane.SmallScroll Down:=1 'прокручиваем вниз на один клик по кнопке на полосе прокрутки
      k = k + 1
      If ActiveWindow.VerticalPercentScrolled > lngVerticalScroll Or k >= 9999 Then
        'если процент прокрутки увеличился, либо было 9999 кликов (это защита от зацикливания) _
        Думаю, значения 9999 хватит для документа на несколько тысяч страниц.
        nk = k
        Exit Do
      End If
    Loop
  ElseIf lngVerticalScroll = 100 Then
    'если документа прокручен на 100%
    Do
      ActiveWindow.ActivePane.SmallScroll Down:=-1 'прокручиваем ВВЕРХ на один клик по кнопке на полосе прокрутки
      k = k + 1
      If ActiveWindow.VerticalPercentScrolled < lngVerticalScroll Or k >= 9999 Then
        'если процент прокрутки УМЕНЬШИЛСЯ
        'проверка на k >= 9999 тут наверно лишняя, но, на всякий случай, пусть будет
        nk = k
        Exit Do
      End If
    Loop
  End If
'''''''' Конец первого блока прокрутки
    
Dim myRange As Range
Dim a, b
    a = Selection.Range.Start ' левая граница выделения
    b = Selection.Range.End ' правая граница выделения
    
    Set myRange = ActiveDocument.Range(Start:=a, End:=b) 'сохраняем положение выделения
    
    ActiveWindow.View.ShowFieldCodes = True ' включение отображения кодов полей
    
    Selection.Find.ClearFormatting
    With Selection.Find 'настройка опций поиска
        .text = "^d EMBED Equation.3" '^d  - означает поле
        .Replacement.text = ""
        .Forward = True
        .Wrap = wdFindStop ' останавливаем поиск в конце
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
        
    Do Until Selection.Find.Execute = False Or Selection.Range.End >= b
'        If Selection.Type = wdSelectionShape Then
'            Selection.ShapeRange(1).ConvertToInlineShape.Select
'        End If
'        Selection.InlineShapes(1).OLEFormat.ConvertTo ClassType:="Equation.3", _
'            DisplayAsIcon:=False
        
          'принудительно делаем ширину и высоту 100%, на всякий случай.
        Selection.InlineShapes(1).ScaleWidth = 100
        Selection.InlineShapes(1).ScaleHeight = 100
        
    Loop
    
    ActiveWindow.View.ShowFieldCodes = False ' выключение отображения кодов полей
    
    Call ClearFindDialog ' очистить поиск ДОБАВИЛ ЭТО НЕДАВНО
    myRange.Select ' выделяем исходное выделение
    
'''''''' Начало ВТОРОГО блока прокрутки
    'Восстанавливаем исходную прокрутку документа. _
    Два раза потому, что с первого раза не всегда срабатывает почему-то. _
    Кроме того исходная прокрутка восстанавливается с большой погрешностью, поскольку значение округляется до целых.
  ActiveWindow.VerticalPercentScrolled = lngVerticalScroll
  ActiveWindow.VerticalPercentScrolled = lngVerticalScroll
  
  k = 0 'инициализация счетчика
  If lngVerticalScroll < 100 And nk < 9999 Then
    'если исходная прокрутка была менее 100% и в первом блоке прокрутки удалось увеличить процент прокрутки
    Do
      'прокручиваем вниз по клику до тех пор пока не увеличим прокрутку на 1% (число кликов может отличаться от nk)
      ActiveWindow.ActivePane.SmallScroll Down:=1 'прокручиваем вниз на один клик по кнопке на полосе прокрутки
      k = k + 1
      If ActiveWindow.VerticalPercentScrolled > lngVerticalScroll Then 'Or k >= 9999 Then
          'когда процент прокрутки увеличится, прокручиваем назад на ранее запомненное число nk, _
          чтобы вернуться в к исходной прокрутке с высокой точнотью. _
          Условие Or k>=9999 тут лишнее, поскольку оно фактически есть выше (And nk < 9999).
        ActiveWindow.ActivePane.SmallScroll Down:=-nk 'прокручиваем назад ВВЕРХ
        Exit Do
      End If
    Loop
  ElseIf lngVerticalScroll = 100 And nk < 9999 Then
    'если исходная прокрутка была 100% и в первом блоке прокрутки удалось УМЕНЬШИТЬ процент прокрутки
    Do
      ActiveWindow.ActivePane.SmallScroll Down:=-1 'прокручиваем ВВЕРХ на один клик по кнопке на полосе прокрутки
      k = k + 1
      If ActiveWindow.VerticalPercentScrolled < lngVerticalScroll Then
        'когда процент прокрутки УМЕНЬШИТСЯ, прокручиваем назад на ранее запомненное число nk
        ActiveWindow.ActivePane.SmallScroll Down:=nk 'прокручиваем назад ВНИЗ
        Exit Do
      End If
    Loop
  End If
'''''''' Конец ВТОРОГО блока прокрутки

'    Selection.MoveLeft Unit:=wdCharacter, Count:=1 ' это действие лучше не делать
End Sub



Private Sub ClearFindDialog()
' Очистиль поиск
'''    Selection.WholeStory
'''    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.Find.ClearFormatting
    With Selection.Find
        .text = "" ' ищем ничего
        .Replacement.text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
End Sub
Мой шаблон/макросы для автоматической нумерации Word 2003, 2007, 2010 и т.д. (стили, названия, перекрестные ссылки, LISTNUM). Делюсь: http://vk.com/club_alex_bir

10

Re: Самопроизвольное изменение размера объекта-формулы

Спасибо, работает!
Вопрос, почему вообще происходит самопроизвольное изменение размеров формул в docx?

11

Re: Самопроизвольное изменение размера объекта-формулы

"Соорудил" (лишнее убрал) вот это:

Sub TransformSelectedEquations()
' преобразовать выделенные формулы
' "Прощелкать" формулы, которые попали в выделение
    
Dim myRange As Range
Dim a, b
    a = Selection.Range.Start ' левая граница выделения
    b = Selection.Range.End ' правая граница выделения
    
    Set myRange = ActiveDocument.Range(Start:=a, End:=b) 'сохраняем положение выделения
    
    ActiveWindow.View.ShowFieldCodes = True ' включение отображения кодов полей
    
    Selection.Find.ClearFormatting
    With Selection.Find 'настройка опций поиска
        .Text = "^d EMBED Equation.3" '^d  - означает поле
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindStop ' останавливаем поиск в конце
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
        
    Do Until Selection.Find.Execute = False Or Selection.Range.End >= b
        'If Selection.Type = wdSelectionShape Then
        '   Selection.ShapeRange(1).ConvertToInlineShape.Select
        'End If
        'Selection.InlineShapes(1).OLEFormat.ConvertTo ClassType:="Equation.3", _
        '   DisplayAsIcon:=False
        'принудительно делаем ширину и высоту 100%, на всякий случай.
        Selection.InlineShapes(1).ScaleWidth = 100
        Selection.InlineShapes(1).ScaleHeight = 100
        
    Loop
    
    ActiveWindow.View.ShowFieldCodes = False ' выключение отображения кодов полей
    
    myRange.Select ' выделяем исходное выделение
    
End Sub

Я так понимаю, от исходного макроса убрал прокрутку. Основную работу выполняет.
Вылез один момент. После применения макроса, при последующем создании нового документа (через Ctrl+N) открывается новый файл с масштабом 10%. Как этот эффект убрать?

12

Re: Самопроизвольное изменение размера объекта-формулы

sea пишет:

Я так понимаю, от исходного макроса убрал прокрутку.

Ну, ваше право. Это нужно для восстановления исходной прокрутки, которая была до выполнения макроса. Мне пришлось немало попотеть, что сообразить как это восстановление сделать, потому что в Ворде, по непонятным причинам, нет нормальной встроенной функции (наверно, это просто очередной баг VBA).

sea пишет:

После применения макроса, при последующем создании нового документа (через Ctrl+N) открывается новый файл с масштабом 10%. Как этот эффект убрать?

Не знаю, у меня в Word 2007 такого не происходит. Думаю, это не связано с макросом, потому как связи не вижу.

Вот, например, команда для установки 100% масштаба, не знаю, может пригодится...

Sub Zoom100()
  ActiveWindow.ActivePane.View.Zoom.Percentage = 100
End Sub
Мой шаблон/макросы для автоматической нумерации Word 2003, 2007, 2010 и т.д. (стили, названия, перекрестные ссылки, LISTNUM). Делюсь: http://vk.com/club_alex_bir

13

Re: Самопроизвольное изменение размера объекта-формулы

Еще советую добавить в начале и в конце макроса команды отключения/включения обновления экрана:

Application.ScreenUpdating = False 'отключаем обновление экрана
Application.ScreenUpdating = True 'включаем обновление экрана

Это нужно, чтобы на экране не происходило "безумие" во время выполнения разных макросов (хотя некоторым это нравится). Также это повышает производительность.

Мой шаблон/макросы для автоматической нумерации Word 2003, 2007, 2010 и т.д. (стили, названия, перекрестные ссылки, LISTNUM). Делюсь: http://vk.com/club_alex_bir

14

Re: Самопроизвольное изменение размера объекта-формулы

Прокрутка мне просто не требуется, даже вредна. В файле есть графические объекты, внедренные в документ, так вот когда они отображаться начинают word подтормаживает.

По обновлению экрана - пригодилось. "Потроха" не видно, да и сам макрос быстрее выполняется.

А вот команда

ActiveWindow.ActivePane.View.Zoom.Percentage = 100

Положения дел не изменила. После того как выполнил макрос закрываю word, затем открываю любой документ - масштаб 10%. Если пустой макрос запускать - такого нет.

15

Re: Самопроизвольное изменение размера объекта-формулы

Вот эта строка вызывает 10% масштаба в следующих открытых документах

ActiveWindow.View.ShowFieldCodes = True ' включение отображения кодов полей

Наверное это глюк Word 2013. Можно избавиться от него, если после макроса выполнить "Отображение документа в масштабе 1:1" - кнопка с изображением 100%, меню "Вид". Можно эту команду в макрос поставить как-нибудь?

16

Re: Самопроизвольное изменение размера объекта-формулы

Вопрос снимается. Глюк пропал после установки последних обновлений для Office 2013.
В общем сейчас пользуюсь этим (может кому пригодится):

Sub Сброс_Equation()
' преобразование формул в выделении
' "Прощелкивание" формул, которые попали в выделение
    
Dim myRange As Range
Dim a, b
    a = Selection.Range.Start ' левая граница выделения
    b = Selection.Range.End ' правая граница выделения
    Set myRange = ActiveDocument.Range(Start:=a, End:=b) ' сохранение положения выделения
    
    Application.ScreenUpdating = False ' отключение обновление экрана
    ActiveWindow.View.ShowFieldCodes = True ' включение отображения кодов полей
    
    Selection.Find.ClearFormatting ' сброс форматирования последнего поиска
    With Selection.Find ' настройка опций поиска
        .Text = "^d EMBED Equation.3" ' ^d  - означает поле
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindStop ' остановка поиска в конце
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
        
    Do Until Selection.Find.Execute = False Or Selection.Range.End >= b
        'If Selection.Type = wdSelectionShape Then
        '   Selection.ShapeRange(1).ConvertToInlineShape.Select
        'End If
        'Selection.InlineShapes(1).OLEFormat.ConvertTo ClassType:="Equation.3",
        '   DisplayAsIcon:=False
        ' принудительная установка ширины и высоты 100%.
        Selection.InlineShapes(1).ScaleWidth = 100
        Selection.InlineShapes(1).ScaleHeight = 100
    Loop
    
    ActiveWindow.View.ShowFieldCodes = False ' выключение отображения кодов полей
    Application.ScreenUpdating = True ' включение обновления экрана
    
    myRange.Select ' установка исходного выделения
  
End Sub

На основе данного макроса еще три соорудил для рисунков различных. Изменения только в строке:

.Text = "^d EMBED Equation.3" ' ^d  - означает поле

Для связанных фрагментов Компас:

.Text = "^d LINK KOMPAS.FRW" ' ^d  - означает поле

Вставленные рисунки со связью, ассоциированные с Paint:

.Text = "^d LINK Paint.Picture" ' ^d  - означает поле

Рисунки в документе:

.Text = "^d EMBED PBrush" ' ^d  - означает поле

В идеале хотелось, чтобы перед началом преобразований диалоговое окно появлялось, где вводились бы требуемые высота и ширина в % (для рисунков). Может у кого пример какой-нибудь есть, чтобы поковырять...

17

Re: Самопроизвольное изменение размера объекта-формулы

Всем привет. Есть вопрос по формулам. Как сжать (не уменьшить) формулу, сохраняя шрифт. Заранее спасибо