Тема: Помогите подправить Макрос Disser 5.1
Есть такой набор замечательных макросов Disser 5.1 от Каньковского Пётра выпущенных в 2002-2003 годах для оформления диссертаций, дипломов.
И всё меня в нем устраивает кроме одного из макросов:
Вставка формулы
вот собсвенно его код:
Sub CreateFormula()
On Error GoTo 1
Dim A&, Expl&
With Selection
If Len(.Paragraphs(1).Range.Text) > 1 Then .TypeParagraph
A = .start
With .ParagraphFormat
.TabStops.Add CentimetersToPoints(16.5), wdAlignTabRight
.LeftIndent = CentimetersToPoints(1.6)
.FirstLineIndent = 0
End With
.TypeText vbTab
.TypeText "("
AddFields "Формула"
.TypeText ")"
Select Case MsgBox("Включить экспликацию? Экспликация — это подпись к формуле, поясняющая значения входящих в неё символов (пример: «s — путь, v — скорость»)", vbYesNoCancel Or vbQuestion Or vbDefaultButton2, "Создать формулу")
Case vbCancel: .Paragraphs(1).Range.Delete: Exit Sub
Case vbYes
.TypeText ","
.ParagraphFormat.KeepWithNext = True
.TypeParagraph
On Error GoTo 2
.Style = "Экспликация"
On Error GoTo 1
.TypeText "где"
For i% = 1 To 2
.TypeText vbTab & " – , ;": .TypeParagraph
.Style = "Экспликация"
Next i
.TypeText vbTab & " – , "
End Select
.TypeText "." & vbCrLf
.start = A
End With
ActiveDocument.InlineShapes.AddOLEObject Range:=Selection.Range, ClassType:="Equation.3"
ActiveDocument.Fields.Update
Exit Sub
2
If Err.Number = 5834 Then Application.OrganizerCopy ThisDocument.FullName, ActiveDocument.FullName, "Экспликация", wdOrganizerObjectStyles: Resume
1
MsgBox Err.Description, vbCritical, "Ошибка"
End Sub
так же есть другой замечательный макрос №2 для автоматической нумерации формул в тексте основанный на статье Способы решения некоторых проблем при вставке таблиц, формул и рисунков в Microsoft Word (Николай Воронин)
вот и его код
Sub CreateFormula2()
'
' Формула_с_номером Макрос
' Вставка формулы с номером
' Макрос записан 24.08.00 Н.Н. Воронин
'
Selection.TypeParagraph
Selection.MoveUp Unit:=wdLine, Count:=1
Selection.TypeText Text:=vbTab
CaptionLabels.Add Name:="("
Selection.InsertCaption Label:="(", TitleAutoText:="InsertCaption2", title _
:="", Position:=wdCaptionPositionBelow
Selection.TypeText Text:=")"
Selection.HomeKey Unit:=wdLine
Selection.MoveRight Unit:=wdCharacter, Count:=2
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.HomeKey Unit:=wdLine
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.ConvertToTable Separator:=wdSeparateByTabs, NumColumns:=2, _
NumRows:=1, Format:=wdTableFormatNone, ApplyBorders:=True, ApplyShading:= _
True, ApplyFont:=True, ApplyColor:=True, ApplyHeadingRows:=True, _
ApplyLastRow:=False, ApplyFirstColumn:=True, ApplyLastColumn:=False, _
AutoFit:=True, AutoFitBehavior:=wdAutoFitContent
Selection.Borders(wdBorderTop).LineStyle = wdLineStyleNone
Selection.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
Selection.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
Selection.Borders(wdBorderRight).LineStyle = wdLineStyleNone
Selection.Borders(wdBorderVertical).LineStyle = wdLineStyleNone
Selection.Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone
Selection.Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone
Selection.Tables(1).Select
Selection.Cells.VerticalAlignment = wdCellAlignVerticalCenter
Selection.EndKey Unit:=wdRow
Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
Selection.SelectColumn
Selection.Columns.PreferredWidthType = wdPreferredWidthPercent
Selection.Columns.PreferredWidth = 5
Selection.HomeKey Unit:=wdRow
Selection.SelectColumn
Selection.Columns.PreferredWidthType = wdPreferredWidthAuto
Selection.Columns.PreferredWidth = 0
Selection.EndKey Unit:=wdRow
Selection.SelectColumn
With Selection.Cells(1)
.WordWrap = False
.FitText = False
End With
Selection.EndKey Unit:=wdRow
Selection.SelectColumn
Selection.Columns.PreferredWidthType = wdPreferredWidthAuto
Selection.Columns.PreferredWidth = 0
Selection.SelectColumn
Selection.Columns.PreferredWidthType = wdPreferredWidthPercent
Selection.Columns.PreferredWidth = 5
Selection.HomeKey Unit:=wdRow
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
Selection.Tables(1).Select
With Selection.Tables(1)
.TopPadding = CentimetersToPoints(0)
.BottomPadding = CentimetersToPoints(0)
.LeftPadding = CentimetersToPoints(0.19)
.RightPadding = CentimetersToPoints(0.19)
.Spacing = 0
.AllowPageBreaks = True
.AllowAutoFit = True
End With
Selection.InlineShapes.AddOLEObject ClassType:="Equation.3", LinkToFile:= _
False, DisplayAsIcon:=False
Selection.Style = ActiveDocument.Styles("Обычный")
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
With Selection.ParagraphFormat
.FirstLineIndent = CentimetersToPoints(0)
End With
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.Delete Unit:=wdCharacter, Count:=1
End Sub
А теперь внимание вопрос: как изменить макрос№1 (Диссер 5.1.) так чтоб он создавал новые формулы как по шаблону мароса № 2 (т.е. через создание таблицы шириной=100% из одной строки, двумя столбцами, причем ширина последнего (5%)) но вставлял туда "свою" нумерацию формул.
Как я понимаю они используют разные алгоритмы нумерации независимые друг от друга.
т.е. тут идет речь лишь об визуальном измении.
При этом пункт с выбором экспликации исключить.
Сами макросы прикреплены.