1

Тема: Помогите подправить Макрос 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%)) но вставлял туда "свою" нумерацию формул.
Как я понимаю они используют разные алгоритмы нумерации независимые друг от друга.
т.е. тут идет речь лишь об визуальном измении.
При этом пункт с выбором экспликации исключить.
Сами макросы прикреплены.

Post's attachments

_Макросы для формул.zip 431.5 Кб, 6 скачиваний с 2011-06-14 

You don't have the permssions to download the attachments of this post.

2

Re: Помогите подправить Макрос Disser 5.1

pobat пишет:

макросов Disser 5.1 от Каньковского Пётра

а AddFields "Формула" - работает?
это случайно не .Fields.Add "Формула"
у меня аглицкий 2003 - "Формула" не канает тоже sad а что у них в аглицком...

Делай, что можешь, и будь, что будет!

3

Re: Помогите подправить Макрос Disser 5.1

VBA-addict пишет:
pobat пишет:

макросов Disser 5.1 от Каньковского Пётра

а AddFields "Формула" - работает?
это случайно не .Fields.Add "Формула"
у меня аглицкий 2003 - "Формула" не канает тоже sad а что у них в аглицком...

я вроде уже разобрался) спасибо за помощь

4

Re: Помогите подправить Макрос Disser 5.1

pobat, макрос в студию!)