Консультация № 172330
19.09.2009, 11:22
0.00 руб.
0 1 1
Здравствуйте, уважаемые эксперты! Нужна помощь в написании небольшого макроса для Microsoft Word. Задача состоит в следующем: в документе Word размещено очень большое количество формул, созданных во встроенном редакторе формул MS Equation 3.0. Необходимо преобразовать все эти формулы в изображения и установить для каждого такого изображения свойство обтекания "В тексте". Создал небольшой макрос, работающий так: после выделения формулы в документе макрос вызывается на исполнение, в результате этого формула "вырезается" из документа и вставляется как EMF-рисунок. Но поскольку формул очень много, нужно автоматизированное решение данного вопроса (т.е. в документе ищутся все формулы, каждая из них преобразуется в рисунок и для преобразованного рисунка устанавливается обтекание "В тексте"). Заранее спасибо!

Приложение:
Selection.Cut
Selection.PasteSpecial DataType:=wdPasteMetafilePicture

Обсуждение

Неизвестный
19.09.2009, 16:26
общий
это ответ
Здравствуйте, denmmx.
Предлагаю такой макрос:
Код:
Sub ConvertFormulaToPicture()
Dim oInShp As InlineShape 'Переменная для формул
Dim i As Long 'Счетчик фигур, имеющих обтекание «в тексте»
Dim oRng As Range 'Место, где находится фигура

'Перебираем все фигуры, имеющие обтекание в тексте, начиная с последней
For i = ActiveDocument.InlineShapes.Count To 1 Step -1
'запоминаем фигуру в переменную
Set oInShp = ActiveDocument.InlineShapes(i)
'Если фигура является объектом MSEquation
If oInShp.OLEFormat.ClassType = "Equation.3" Then
'Запоминаем место, где находится фигура
Set oRng = oInShp.Range
With oRng
.Cut 'Вырезаем
.PasteSpecial DataType:=wdPasteMetafilePicture 'Вставляем
'Преобразовуем в фигуру, имеющую обтекание «в тексте»
ActiveDocument.Shapes(ActiveDocument.Shapes.Count).ConvertToInlineShape
End With
End If
Next i
End Sub
5
Огромное спасибо за макрос, все работает как нужно!
Форма ответа