Управление формулами в Word 2007 из под Delphi

аватар: LIONard
Звание: Наблюдатель
Сообщений: 5

Вот появилась задача и в ней нужно управлять формулами именно в 2007-м Worde. Прошу обратить внимание - управлять именно новым редактором формул, а не старым добрым (и глючным) Microsoft Equation 3.
В Сети про это ничего не нашёл, вот и решил обратится за помощью.

аватар: pesi
Звание: Наблюдатель
Сообщений: 64

Записываем макросов и повторяем его на Delphi:)

var
  MSWord: Variant;
begin
  MsWord:= CreateOleObject('Word.Application');
  MsWord.Visible := True;
  MSWord.Activate;
  MSWord.Documents.Add;
  MSWord.WordBasic.EquationInsert;
  MsWord.Selection.TypeText('11');
  MsWord.Selection.InsertSymbol(62, True, 0);
  MsWord.Selection.TypeText('2');
  MsWord.Selection.InsertSymbol(61, True, 0);// CharacterNumber:=61, Unicode:=True, Bias:=0
  MsWord.Selection.TypeText('4+6');
  MsWord.Selection.TypeParagraph;
end;

аватар: LIONard
Звание: Наблюдатель
Сообщений: 5

Спасибище!

аватар: LIONard
Звание: Наблюдатель
Сообщений: 5

А как более сложные формулы - с использованием допусти корня или дроби? Что-то пытаюсь, не получается. Надо уловить аналогию ВБА и Делфи. Помогите, пожалуйста.

аватар: pesi
Звание: Наблюдатель
Сообщений: 64

const
  wdOMathFracBar = 0;
  wdOMathFracNoBar = 1;
  wdOMathFracSkw = 2;
  wdOMathFracLin = 3;
  wdOMathFunctionFrac = 7;
var
  MSWord, OMath, OMathFunction: Variant;
begin
  MsWord:= CreateOleObject('Word.Application');
  MsWord.Visible := True;
  MSWord.Activate;
  MSWord.Documents.Add;
 
  MSWord.WordBasic.EquationInsert;
  MsWord.Selection.TypeText('11');
  MsWord.Selection.InsertSymbol(177, True, 0);
  OMath:= MsWord.Selection.OMaths.Item(1);
  OMathFunction:= OMath.Functions.Add(MsWord.Selection.Range, wdOMathFunctionFrac);
  OMathFunction.Frac.Type:= wdOMathFracBar;
  MsWord.Selection.MoveLeft(wdCharacter, 2);
  MsWord.Selection.TypeText('1');
  MsWord.Selection.InsertSymbol(215, True, 0);
  MsWord.Selection.MoveRight(wdCharacter, 1);
  MsWord.Selection.TypeText('2');
  MsWord.Selection.MoveRight(wdCharacter, 1);
  MsWord.Selection.InsertSymbol(43, True, 0);
  MsWord.Selection.TypeText('9');
  MsWord.Selection.TypeParagraph;
end;

аватар: Va-Bank
Звание: Гуру
Сообщений: 5573

Записывай в начале макрос и не важно что это Word, Excel и т.п. и какой версии. Потом открываешь исходный код в VBA и переводишь его на делфи. Хотя если ты не знаешь бейсика, наверно сложновато будет. Хотя на самом деле там не очень то и сложно. Значение переменных в VBA, можно посмотреть из под отладчика в самом VBA.

__________________