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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2010, 17:01   #1
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию Word VBA как вставить разрыв принудительный в формулу ?

Если щелкнуть мышью по формуле набранной в новом редакторе 2007/10 ворда то там есть опция - "вставить принудительный разрыв". иногда чрезвычайно полезная опция.
вопрос как вставить такой разрыв программно ? что это за знак ? клик мышью при записи макроса не работает - т.е через запись не посмотреть.
в мануале инфы не нашел.
пробовал текст выражения выводить до и после вставки разрыва
Set f = oDoc.Range.OMaths
f(1).linearize
Debug.Print f(1).Range.text
одно и то же показывает... ( идеи есть у кого ?
chrw(11) если вставить формулу разрывает.
с chrw(10) тоже ничего не дает. какой знак еще попробовать можно ?
у кого ворд английский - скажите как эта фукнция оригинально называется, может хоть погуглить смогу нормально...

Последний раз редактировалось bdfy; 28.11.2010 в 17:08.
bdfy вне форума Ответить с цитированием
Старый 28.11.2010, 20:19   #2
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Помогут команды MS Word, начинающиеся со слова Equation.
Вставка разрыва в формуле:
Код:
Application.Run "EquationManualBreak"
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 28.11.2010, 21:55   #3
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

истина да, гдето в этих краях. хотя справка ничего похожего на EquationManualBreak и не показывает.
если в Word поставить на место разрыва курсор и запустить макрос - работает.
из екселя тоже работает.
Код:
Set oDoc = GetObject(ThisWorkbook.Path & "\отчет0.docx")

Debug.Print oDoc.Application
oDoc.Application.Run "EquationManualBreak"
большой вопрос вот только как на эту самую позицию курсор выставить.... может "EquationManualBreak" параметры какие понимает...

Последний раз редактировалось bdfy; 28.11.2010 в 21:59.
bdfy вне форума Ответить с цитированием
Старый 28.11.2010, 22:22   #4
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

OMathBreaks.Add еще похоже из этой оперы. но работать заставить ен получается ((
OMathBreaks.Сount даже не работает ((
bdfy вне форума Ответить с цитированием
Старый 28.11.2010, 22:51   #5
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию Истина на месте :)

Цитата:
Сообщение от bdfy Посмотреть сообщение
…справка ничего похожего на EquationManualBreak и не показывает…
По командам справка не помощник. Краткие описания есть в списке команд: Alt+F8 > Макросы из "Команды Word" > Выбираем команду и читаем поле "Описание".
Цитата:
Сообщение от bdfy Посмотреть сообщение
…как на эту самую позицию курсор выставить…
Код:
    ' курсор
    With ActiveDocument.OMaths(1).Functions(1).Range
        .Collapse wdCollapseEnd
        .Select
    End With
    ' разрыв
    Application.Run "EquationManualBreak"
Цитата:
Сообщение от bdfy Посмотреть сообщение
…OMathBreaks …. работать заставить…
Так работает:
Код:
ActiveDocument.OMaths(1).Breaks.Count
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 28.11.2010, 23:02   #6
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

тогда и add должно работать. оно же именно эти разрывы и считает
oDoc.OMaths(1).Breaks.Add (а вот тут должен быть range). для формулы я range сформулировать не могу ((
по идее как то так ведь должно быть ?
Код:
oDoc.OMaths(1).Breaks.Add (oDoc.OMaths(1).Range(start:=10, End:=10))
ан, не работает (( разрыв предполагается в уже набранную программой формулу вставлять.
bdfy вне форума Ответить с цитированием
Старый 29.11.2010, 00:17   #7
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Все работает:
Код:
Dim M As Word.OMath
Dim R As Word.Range
    
    Set M = ActiveDocument.OMaths(1)
    Set R = M.Functions(1).Range
    R.Collapse wdCollapseStart ' wdCollapseEnd
    M.Breaks.Add R
Если еще не догадались, то поясню, что разрыв нельзя вставить внутри функции (Function.Range), только перед или после. Также нельзя вставить в начале и конце формулы.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 29.11.2010, 20:19   #8
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

Цитата:
Если еще не догадались, то поясню, что разрыв нельзя вставить внутри функции (Function.Range), только перед или после.
я не догадался как определить нужное мне место в формуле ((
предположим что я знаю конкретное место в формуле и отмечу его спец. знаком $ например - как этот знак заменить на разрыв ? т.е как конкретную позицию в формуле указать где разрыв сделать ? Range на число знаков у меня сделать не вышло ((
bdfy вне форума Ответить с цитированием
Старый 29.11.2010, 23:41   #9
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Пример поиска и замены символа "$" разрывом во всех формулах документа:
Код:
    ActiveDocument.Range(0, 0).Select
    With Selection.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Forward = True
        .Wrap = wdFindStop
        .Text = "$"
    End With
    Do While Selection.Find.Execute
        If Selection.OMaths.Count = 1 Then
            Selection.Delete
            Selection.OMaths(1).Breaks.Add Selection.Range
        End If
        Selection.Collapse wdCollapseEnd
    Loop
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 30.11.2010, 06:14   #10
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

без селекшенов никак нельзя обойтись ? через range чисто ? документ программно набирается - обьект формулы мне известен.
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