Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2010, 06:52   #11
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Просто замените слово Selection на Ваш Range.

Описали бы задачу в целом. Что есть на входе? Что должно быть на выходе?
А то уже получили кучу ответов на общие отстраненные вопросы, а толку как я понял мало.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 30.11.2010, 18:58   #12
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

выдрал кусочек кода
Код:
text = " G_Ст="
text = text & "((" & ChrW(960) & "·D_a^2/4-" & ChrW(960) & "·D^2/4-D·S'_п·10^-6)+$" '& ChrW(2177)
text = text & "(" & ChrW(960) & "·D^2/4-Z_2·S'_п·10^-6))·l_" & ChrW(948) & "·" & ChrW(961) & "_ст" & "="

Set oRng = oDoc.Paragraphs(oDoc.Paragraphs.Count).Range
  With oRng
         'вставка формулы
        .text = text
        Set oRng = oRng.OMaths.Add(oRng)
        
        oRng.Font.Italic = False
        Set objEq = oRng.OMaths(1)
        objEq.buildup
       
  End With
oDoc некий документ Word в данном случае.
я знаю что на место $ надо бы вставить разрыв - иначе переносы будут не очень корректные. как это сделать ?
bdfy вне форума Ответить с цитированием
Старый 30.11.2010, 21:10   #13
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Решение прояснилось.

Команда Breaks.Add работает только перед оператором. А вот как она сработает, это задает параметр Document.OMathBreakBin:
wdOMathBreakBinBefore - оставить оператор после разрыва
wdOMathBreakBinAfter - поместить оператор перед разрывом
wdOMathBreakBinRepeat - дублировать оператор (до и после разрыва)
Также заметил, что форматирование формулы (.Italic = False) удаляет разрывы.

Переставил "$" вперед операторов и добавил вышеупомянутый параметр:
Код:
Dim oDoc As Word.Document
Dim oRng As Word.Range
Dim objEq As Word.OMath
Dim Text$

    Set oDoc = ActiveDocument
    ' текст формулы
    Text = " G_Ст="
    Text = Text & "((" & ChrW(960) & "•D_a^2/4-" & ChrW(960) & "•D^2/4-D•S'_п•10^-6)$+" '& ChrW(2177)
    Text = Text & "(" & ChrW(960) & "•D^2/4-Z_2•S'_п•10^-6))•l_" & ChrW(948) & "•" & ChrW(961) & "_ст" & "="
    ' вставка формулы
    Set oRng = oDoc.Paragraphs.Last.Range
    oRng.Text = Text
    Set oRng = oRng.OMaths.Add(oRng)
    oRng.Font.Italic = False
    ' форматирование формулы
    Set objEq = oRng.OMaths(1)
    oDoc.OMathBreakBin = wdOMathBreakBinAfter
    Do While oRng.MoveStartUntil("$", oRng.Characters.Count) > 0
        With oRng.Characters.First
            .Delete
            objEq.Breaks.Add .Duplicate
        End With
    Loop
    objEq.BuildUp
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 01.12.2010, 08:06   #14
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

вот теперь спасибо разобрался работает
Цитата:
А вот как она сработает, это задает параметр Document.OMathBreakBin:
это собственно как правило для документа задается. в меню конструктора формулы. так что в код это пихать имхо излишне.
bdfy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставить разрыв страницы alexvav Microsoft Office Excel 2 14.09.2010 14:51
Как написать из excel формулу в word Святой Дьявол Microsoft Office Excel 1 13.09.2010 22:07
как вставить формулу в vba Ilya_L Microsoft Office Excel 6 18.06.2010 09:10
Возникает ошибка 10053 и происходит принудительный разрыв соединения Маёвец Работа с сетью в Delphi 0 28.01.2010 14:36