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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2009, 15:26   #1
RusArtm
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 22
По умолчанию Как открыть из дельфи файл MS Word и выполнить в нем замены подстрок

Здравтсвуйте.

Есть у меня такая необходимость: открыть из дельфи файл MS Word и выполнить в нем замены подстрок на другие подстроки.

В данный момент я просто создаю ОЛЕ объект WordApplication и через него выполняю открытие файла и замену подстрок.

Но хочется, чтобы Ворд не откывался, и чтобы все было просто на формоке в программе.

Другими словами надо поместить объект OleContainer, загрузить в него файл Word и заменить в нем подстроки на нужные подстроки.

Не подскажите как или где рыть хотябы... или может ктото знает, как это зделать?

Зараннее спасибо за дельные ответы.
RusArtm вне форума Ответить с цитированием
Старый 26.05.2009, 18:45   #2
Stalevar
 
Регистрация: 17.02.2009
Сообщений: 6
По умолчанию

RusArtm

Посмотри эту статью http://www.kornjakov.ru/stat.htm
Там все хорошо написано.
Stalevar вне форума Ответить с цитированием
Старый 27.05.2009, 11:28   #3
AHTuKiLLeR
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 15
По умолчанию

Я занимался соданием подобной проги. поэтому подскажу.
Доки уже позабыл где брал, поэтому приведу пример как реализовано у меня

Список переменных
Код:
  W:variant;
Для начала надо запустить Ворд.
Код:
function TForm3.CreateWord: boolean;
begin
  CreateWord:=true;
  try
    W:=CreateOleObject('Word.Application');
  except
    CreateWord:=false;
  end;
End;
Опционально после этого можно сделать его видимым. Я не делал. Все происходило в фоновом режиме.
Код:
function TForm3.VisibleWord(visible:boolean):boolean;
begin
  VisibleWord:=true;
  try
    W.visible:= visible;
  except
    VisibleWord:=false;
  end;
End;
Далее загружаем документ
Код:
Function TForm3.OpenDoc(name_:string):boolean;
Var
  Doc_:variant;
begin
  OpenDoc:=true;
  try
    Doc_:=W.Documents;
    Doc_.Open(name_);
  except
    OpenDoc:=false;
  end;
End;
Редактирование документа(смотри названия функций)
Код:
Function TForm3.FindAndPasteTextDoc(findtext,pastetext:string):boolean;
begin
  FindAndPasteTextDoc:=true;
  try
    W.Selection.Find.Forward:=true;
    W.Selection.Find.Text:= findtext;
    if W.Selection.Find.Execute then
      begin
      W.Selection.Delete;
      W.Selection.InsertAfter (pastetext);
      end
    else
      FindAndPasteTextDoc:=false;
  except
    FindAndPasteTextDoc:=false;
  end;
end;

function TForm3.FindTextDoc(text:string):boolean;
begin
  FindTextDoc:=true;
  Try
    W.Selection.Find.Forward:=true;
    W.Selection.Find.Text:=text;
    FindTextDoc := W.Selection.Find.Execute;
  except
    FindTextDoc:=false;
  end;
End;

Function TForm3.SetTextToDoc(text_: string;InsertAfter_: boolean): boolean;
var Rng_:variant;
begin
  SetTextToDoc:=true;
  try
    Rng_:=W.ActiveDocument.Range;
    if InsertAfter_
      then Rng_.InsertAfter(text_)
      else Rng_.InsertBefore(text_);
  except
    SetTextToDoc:=false;
  end;
End;

function TForm3.ChangeTextStyle(TextSelection:variant; Name: string; Size:integer; TextStyle: TFontStyles):boolean;
begin
  ChangeTextStyle:=true;
  try
    TextSelection.Size:=Size;
    TextSelection.Name:=Name;
    if fsBold in TextStyle      // æèðíûé
      then TextSelection.Bold:=true
      else TextSelection.Bold:=false;
    if fsItalic in TextStyle    // íàêëîííûé
      then TextSelection.Italic:=true
      else TextSelection.Italic:=false;
    if fsUnderline in TextStyle // ïîä÷åðêíóòûé
      then TextSelection.Underline:=true
      else TextSelection.Underline:=false;
    TextSelection.ColorIndex:=1;
  except
    ChangeTextStyle:=false;
  end;
end;
Сохраняем документ
Код:
Function TForm3.SaveDocAs(file_:string):boolean;
begin
  SaveDocAs:=true;
  try
    W.ActiveDocument.SaveAs(file_);
  except
    SaveDocAs:=false;
  end;
End;
Закрываем документ
Код:
Function TForm3.CloseDoc:boolean;
begin
 CloseDoc:=true;
 try
 W.ActiveDocument.Close;
 except
 CloseDoc:=false;
 end;
End;
Закрываем документ
Код:
Function TForm3.CloseDoc:boolean;
begin
 CloseDoc:=true;
 try
 W.ActiveDocument.Close;
 except
 CloseDoc:=false;
 end;
End;
Закрываем приложение Ворд
Код:
Function TForm3.CloseDoc:boolean;
begin
 CloseDoc:=true;
 try
 W.ActiveDocument.Close;
 except
 CloseDoc:=false;
 end;
End;
AHTuKiLLeR вне форума Ответить с цитированием
Старый 27.05.2009, 12:13   #4
RusArtm
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 22
По умолчанию

Спасибо... в общем то полезную информацию извлечь можно, но у меня вопрос не о том, как открыть ворд и как выполнить в нем замену (это у меня работает).
Вопрос в том, как открыть документ ворд в ОЛЕконтейнере (TOLEContainer) и в нем исправить документ открытый... а потом ещё и напечатать
RusArtm вне форума Ответить с цитированием
Старый 27.05.2009, 13:42   #5
AHTuKiLLeR
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 15
По умолчанию

Задача стоит делать все в TOLEContainer? Или это не суть важно?
У меня просто стояла задача открыть шаблон. В нем заменить строки на необходимую инфу и распечатать документ.( Тоесть формирование и распечатка отчета.)
AHTuKiLLeR вне форума Ответить с цитированием
Старый 27.05.2009, 13:57   #6
RusArtm
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 22
По умолчанию

Задача сделать это именно через ОЛЕ контейнер, просто с шаблонами она сделана...

Моджно спросить конекретнее, как добраться да аналогичных команд Ворда через
OLEContainer.OLEObject
?

или может там есть какоето другое поле, через которое можно управлять загруженным документом, или может это впринципе невозможно?
RusArtm вне форума Ответить с цитированием
Старый 28.05.2009, 03:42   #7
AHTuKiLLeR
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 15
По умолчанию

К сожалению не ковырял данный субъект, поэтому ничего подсказать не могу.
AHTuKiLLeR вне форума Ответить с цитированием
Старый 28.05.2009, 14:47   #8
RusArtm
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 22
По умолчанию

Ну, может быть ктото другой его ковырял ?
RusArtm вне форума Ответить с цитированием
Старый 29.05.2009, 13:25   #9
RusArtm
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 22
По умолчанию

Вопрос пока открыт...
RusArtm вне форума Ответить с цитированием
Старый 05.06.2009, 13:29   #10
RusArtm
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 22
По умолчанию

Уп .
RusArtm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как через дельфи открыть папку в проводнике? t3ns0r Общие вопросы Delphi 6 28.03.2009 21:32
В OleContainer документ Word, как в нем контролировать нажатие клавиши? Djonik Общие вопросы Delphi 0 16.03.2009 18:38
Открыть файл *.doc без установленого Word Pashekka Софт 6 15.09.2007 08:25