andrkar, спасибо за ваш шаблон! Очень помог при написании макроса..
Ошибка возникает потому, что формула имеет отображаемое представление. Соответственно чтобы ошибки не было, принудительно преобразуем ее к встроенному виду, а после вставки в таблицу обратно к отображаемому.
В Word 2007 формулы реализованы иначе... Можно добавить в ваш шаблон определение версии Word и менять свое поведение, в зависимости от версии)
По поводу запятой.. Добавляю ее после разделителя стилей. Когда формула занимает несколько строк, запятая находится на последней строке. Выглядит вполне естественно)
Выложу код своего макроса. Может кому пригодится...
Sub NumberEquation()
Application.ScreenUpdating = False
With Selection
.Paragraphs(1).Range.Select
.OMaths(1).Type = wdOMathInline
.ConvertToTable Separator:=wdSeparateByParagraphs, _
NumColumns:=2, NumRows:=1, AutoFitBehavior:=wdAutoFitWindow
With .Tables(1)
.LeftPadding = CentimetersToPoints(0)
.RightPadding = CentimetersToPoints(0)
.Spacing = 0
.Columns.Add .Columns(1)
.AllowAutoFit = False
.PreferredWidthType = wdPreferredWidthPercent
.PreferredWidth = 100
.Columns(1).PreferredWidthType = wdPreferredWidthPoints
.Columns(1).PreferredWidth = CentimetersToPoints(0.8)
.Columns(3).PreferredWidthType = wdPreferredWidthPoints
.Columns(3).PreferredWidth = CentimetersToPoints(0.8)
.Cell(1, 3).VerticalAlignment = wdCellAlignVerticalCenter
.Cell(1, 3).Range.ParagraphFormat.Alignment = wdAlignParagraphRight
End With
.Tables(1).Cell(1, 2).Select
.EndKey wdLine
.Font.Italic = False
.InsertParagraphAfter
.InsertStyleSeparator
.TypeText ","
.Tables(1).Cell(1, 2).Range.OMaths(1).Type = wdOMathDisplay
.Tables(1).Cell(1, 3).Select
.Font.Italic = False
.TypeText "("
.InsertParagraphAfter
.InsertStyleSeparator
.Font.Hidden = False
.Fields.Add .Range, wdFieldStyleRef, "1 \s", False
.TypeText "."
.Fields.Add .Range, wdFieldSequence, "Формула \s 1", False
.InsertParagraphAfter
.InsertStyleSeparator
.Font.Hidden = False
.TypeText ")"
End With
Application.ScreenUpdating = True
End Sub
Может местами коряво, но для меня главное, чтоб работал
Буду рад вашим замечаниям по поводу макроса.