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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.09.2010, 00:06   #1
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию Как работать в VBA с формулами Word 2007

Если у меня есть запись формулы в линейном виде например
a_1 = a + b = 3 + 5 = 8
как из этого сделать формулу в Word 2007. запись макроса дает что-то невнятное
Код:
WordBasic.EquationEdit 1
    Application.Keyboard (1033)
    Selection.TypeText Text:="a_1 = a + b =  3 + 5 = 8"
    Selection.OMaths.BuildUp
а как бы это через Range сделать по-человечески ?

вот тут есть пример http://bit.pirit.info/forum/viewtopic.php?t=12395
и вот тут http://msdn.microsoft.com/en-us/libr...ffice.12).aspx
но опять же через selection. а меня использование selection традиционно смущает.

а впрочем получилось
Цитата:
Set objRange = oDoc.Paragraphs(oDoc.Paragraphs.Cou nt).Range

objRange.text = "a+b=4"
Set objRange = objRange.OMaths.Add(objRange)
Set objEq = objRange.OMaths(1)
objEq.BuildUp
objRange.InsertParagraphAfter
упорно не получается только выровнять по левому краю и добавить справа номер формулы ((
objEq.ParentOMath.Justification = 3
objRange.Justification = 3
ничего толком не работает

Последний раз редактировалось bdfy; 08.09.2010 в 00:24.
bdfy вне форума Ответить с цитированием
Старый 11.09.2010, 17:57   #2
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

так и не выходит разобраться с нумерацией формул ((
непосредственно формулу вставляет такой код
Код:
set oRng = oDoc.Paragraphs.Count).Range
   text = "a_1=a+b=3+5=8"
With oRng
  

    'вставка формулы
    .text = text
    Set oRng = oRng.OMaths.Add(oRng)
    oRng.Font.Italic = False
    Set objEq = oRng.OMaths(1)
    objEq.ParentOMath.Justification = 3
    
    If newparagraph Then
       .InsertParagraphAfter
       '.ParagraphFormat.Alignment = 3
    End If
    

    
    objEq.ParentOMath.Justification = 3
    objEq.BuildUp


   End With
необходимо вставить слева автоматическую нумерацию. под Word 2003 все работало (спасибо viter_alex'у) следующим образом
Код:
set oRng = oDoc.Paragraphs.Count).Range
    text = "a=a+b=3+5=8"
 'Собственно вставка
  Dim oFld As Object
  
  
  With oRng
    With .ParagraphFormat
    .SpaceAfterAuto = False: .SpaceBeforeAuto = False
    .FirstLineIndent = 0
    .TabStops.ClearAll
    .TabStops.Add oRng.Sections(1).PageSetup.PageWidth - oRng.Sections(1).PageSetup.LeftMargin - oRng.Sections(1).PageSetup.RightMargin - .LeftIndent - .RightIndent, _
                  wdAlignTabRight, wdTabLeaderSpaces
  End With
  
    If нумеровать_формулы Then
        .InsertBefore ")"
        Set oFld = .Fields.Add(oRng, , " SEQ Формула \* ARABIC \s 1", False)
       .InsertBefore "."
         
        Set oFld = .Fields.Add(oRng, , "STYLEREF 1 \s", False)
          .Fields.Update
        .InsertBefore "("
        .InsertBefore vbTab
   '     .ParagraphFormat.Alignment = wdAlignParagraphRight
        
    End If
    
    Set oFld = .Fields.Add(oRng, , text, False)
    .Fields.Update
        If newparagraph Then
           .InsertParagraphAfter
      '     .ParagraphFormat.Alignment = wdAlignParagraphWidth
        End If
   End With
как этот год конвертировать в 2007ой ворд ? попадались в сети решения - http://wordexpert.ru/forum/viewtopic.php?id=281
но через selection работают, словно после записи макроса. а это в данном случае не совсем приемлимо

Последний раз редактировалось bdfy; 11.09.2010 в 20:52.
bdfy вне форума Ответить с цитированием
Старый 11.09.2010, 20:46   #3
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

особая тайна для меня это пункты в меню формулы "изменить на встроенный"/"изменить на отображаемый". Как это в англ. офисе звучит найти не смог - может там больше смысла. все что нашел по теме
http://www.intuit.ru/department/offi...guide/4/7.html
Отображаемый вроде как всегда в отдельную строку, а встроенный на глаз получается меньшим шрифтом как будто. в любом случае название пункта меню несколько странное...

еще момент это переносы. если сравнивать новый редактор формул с полями EQ в ворде 2003 - то перенос строки все таки шаг вперед. раньше не помещающая в строку выражение ошибку выдавало на экран, грустно что нормальных переносов по знакам арифметических операций так и не сделали ((

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

переносы оказывается сделаны. задается дублирование знаков при разрыве строки и даже выравнивание по правому краю. Проблемы возникают если в формулу засунуть длинный текст - его редактор по пробелам перенести не может. Интересно чем можно пробел заменить чтобы выглядело также но воспринималость вордом как место возможного переноса ? "мягкий перенос" напрашивается - попробовал, просто рвет строку на каждом переносе.
bdfy вне форума Ответить с цитированием
Старый 14.09.2010, 02:55   #5
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

получилось ) вопрос с переносом текста правда остался.
Представьте что вам надо записать в Word текст такого вида например
"Полученное значение k_z позволяет предварительно оценить правильность выбранных размерных соотношений и обмоточных данных проектируемой машины. Если k_z > 1,5...1,6, имеет место чрезмерное насыщение зубцовой зоны; если k_z < 1,2, то зубцовая зона мало использована или воздушный зазор взят слишком большим. В обоих случаях в расчет должны быть внесены соответствующие коррективы."
_ - означает индекс нижний. и индексы нужно показать.
Логичным решением кажется просто загнать это все в поле формулы - но тогда отстутсвуют переносы (( идеи есть может у кого нибудь ? вставка мягких переносов не помогает
bdfy вне форума Ответить с цитированием
Старый 14.09.2010, 14:58   #6
Мультипликатор
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 18
По умолчанию

Прикольно!!! Сам спросил - сам ответил... весело!!!
Мультипликатор вне форума Ответить с цитированием
Старый 14.09.2010, 17:18   #7
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

что поделать ) расчитываешь на диалог - получаешь только монолог )) но одна проблема пока осталась - может появяться у кого идеи
bdfy вне форума Ответить с цитированием
Старый 14.09.2010, 17:37   #8
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Поле, сдвигающее продолжение текста по X и Y

Попробуйте это (вставляется по Ctrl-F9 либо через Вставка↓Поле).
Изображения
Тип файла: bmp Поле_Advance.bmp (67.3 Кб, 145 просмотров)
Sasha_Smirnov вне форума Ответить с цитированием
Старый 14.09.2010, 18:42   #9
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

нет. не помогло (
bdfy вне форума Ответить с цитированием
Старый 15.09.2010, 16:47   #10
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

А если Ctrl-d, флажок нижний индекс (одним махом: Ctrl-Shift-+)?
Sasha_Smirnov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конвертировать формулы из [2007 Word 2007] в [2003 Word 2003] mswmd Microsoft Office Word 8 10.07.2017 17:06
Как нумеровать формулы в Word-2007 VistaSV30 Microsoft Office Word 17 28.01.2014 12:54
Word чудит с формулами Rakeduck Microsoft Office Word 1 21.05.2010 19:21
Как сделать фон в WORD (офис 2007) katlis Microsoft Office Word 2 09.09.2009 23:48
Как настроить «ленты» Word 2007? viter.alex Microsoft Office Word 0 09.01.2009 15:10