Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как сделать с MS Word доккументами следующее ?

11K
27 июля 2005 года
Red-Storm
5 / / 21.07.2005
Есть определённый список, в нём к примеру расположнеы следующие данные : Имя, Фамилия и персональный код человека. Есть MS Word документ в котором прописан скажем определённый бланк следующего вида :

[COLOR=darkblue]Персональные Данные :[/COLOR]

[COLOR=darkred]Имя :[/COLOR][COLOR=red] <Name>[/COLOR]
[COLOR=darkred]Фамилия :[/COLOR][COLOR=red] <Surname>[/COLOR]
[COLOR=darkred]Персональный код :[/COLOR][COLOR=red] <PersonalID>[/COLOR]

Как сделать так, чтоб моя программа при открытии документа сама находила тэги <> и забивала вместо них одноимённые данные из списка ? Буду очень благодарен за помощь.
302
28 июля 2005 года
Sagittarius
648 / / 12.04.2003
Цитата:
Originally posted by Red-Storm
Как сделать так, чтоб моя программа при открытии документа сама находила тэги <> и забивала вместо них одноимённые данные из списка?


В данном случае я использую закладки.
Вот код моей функции для замены текста на закладке своим.

Код:
procedure TWordEditForm.WriteBookmark(BookmarkName, Text: String);
Var olestr: OleVariant;

  function SEmpty(s: String): String;
  begin
    if s='' then Result := ' ' else Result := s;
  end;

begin
  olestr := BookmarkName;

  if WordObject.Application.ActiveDocument.Bookmarks.Exists(olestr) then
  begin
    WordObject.Application.ActiveDocument.Bookmarks.Item(olestr).Select;
    WordObject.Application.Selection.TypeText(SEmpty(Text));
  end;
end;

Переделай как тебе нужно.
WordObject - взял из примера Delphi по OLE.
11K
01 августа 2005 года
Red-Storm
5 / / 21.07.2005
Есть такой пример, но я на столько умён, что не смог перевести и запустить его на CBuilder 6. Ошибка при связи с сервером и какой-то бред с параметрами у Range происходит.

Код:
procerdure TForm1.Button1Click(Sender: TObject);
var
  //Объявление переменных, для передачи их в
  //eкачестве формальных параметров в сервер автоматизации
  Shablon,FileName,oldStr,newStr,replace,ext:OleVariant;
begin
  Table1.Active:=false;
  Table1.Active:=true;
  Shablon:=ExtractFilePath(Application.EXEName)+'shablon.DOC';
  FileName:=ExtractFilePath(Application.EXEName)+'report.DOC';
  //Открываем шаблон документа
  WordApplication1.Documents.Open
  (Shablon,EmptyParam, EmptyParam,EmptyParam,
  EmptyParam,EmptyParam,
  EmptyParam,EmptyParam,EmptyParam,EmptyParam);
  //Связываем компоненту с существующим интерфейсом
  WordDocument1.ConnectKind:=ckAttachToInterface;
  WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
  //Следующие переменные понадобятся нам
  //для выполнения методов сервера
  replace:=1; oldStr:='@1'; newStr:=DateTimeToStr(Now);
  //Находим в документе метки и производим их замены
  WordDocument1.Range.Find.Execute(oldStr,EmptyParam,EmptyParam,
  EmptyParam,EmptyParam,EmptyParam,EmptyParam,
  EmptyParam,EmptyParam,newStr,replace);
  oldStr:='@2'; newStr:=WordApplication1.UserName;
  WordDocument1.Range.Find.Execute(oldStr,EmptyParam,EmptyParam,
  EmptyParam,EmptyParam,EmptyParam,EmptyParam,
  EmptyParam,EmptyParam,newStr,replace);

  //сохранение документа и отображение его в OLE контейнере
  //(предварительный просмотр)
  WordDocument1.SaveAs(FileName); WordDocument1.Close;
  OleContainer1.CreateLinkToFile(FileName,false); OleContainer1.Refresh;
end;


Люди помогите пожалуйсто, очень нужно, а-то трудно быть ДЕРЕВЯННЫМ :( !!!
11K
04 августа 2005 года
Red-Storm
5 / / 21.07.2005
В итоге я пришёл к такой теме, но по чему-то ничего не работает. При нажатии на кнопку, пограмма пытается присоединиться к серверу Word'а и затем выдаёт диалог HRCHECK : где пытается доказать мне, что я задал ни те свойства WordApplication1, либо вообще их не указал.

Вид диалога такой :

'this->Open(FileName, ConfirmConversions, ReadOnly, AddToRecentFiles, PasswordDocument, PasswordTemplate, Revert, WritePasswordDocument,
WritePasswrdTemplate, Format, Encoding, Visible,
(Word_2k::WordDocument**)&prop'):Type mismath.
@C:\program files\borland\cbuilder6\include\vcl\Word_2k.h/7261

если нажать на "N to continue" то выплывает есчо один диалог :

(this->get_ActiveDocument((Word_2k::WordDocument**)&prop)) Error: 800A1098
(-2146824040)@C:\program files\borland\cbuilder6\include\vcl\Word_2k.h/5165

Если честно, я вообще не понимаю что я не правильно делаю. посмотрите пожалуйсто в чём ошибка.

Код:
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  OleVariant DocName;
  OleVariant ConfConv;
  OleVariant ReadOnly;
  OleVariant AddToRecFiles;
  OleVariant Psw;
  OleVariant PswTmp;
  OleVariant Revert;
  OleVariant WritePsw;
  OleVariant WritePswTmp;
  OleVariant Fmt;
  OleVariant replace;

  OleVariant RepLabel;
  OleVariant RepToText;
  OleVariant FinalFile;

   DocName   = "c:\\Blank.doc";
   ConfConv  = True;
   ReadOnly  = False;
   AddToRecFiles  = False;
   Psw    = "";
   PswTmp = "";
   Revert = False;
   WritePsw = False;
   WritePswTmp = False;
   Fmt = wdOpenFormatAuto;
   replace = wdReplaceAll;

   WordApplication1->Connect();
   WordApplication1->Documents->Open(DocName, ConfConv, ReadOnly,
   AddToRecFiles, Psw, PswTmp, Revert, WritePsw, WritePswTmp, Fmt);

   WordDocument1->ConnectKind = ckAttachToInterface;
   WordDocument1->ConnectTo(WordApplication1->ActiveDocument);

   RepLabel  = "TestLabel";
   RepToText = Edit1->Text;

   WordDocument1->Range(EmptyParam,EmptyParam)->Find->Execute(RepLabel,EmptyParam,EmptyParam,EmptyParam,
   EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, RepToText,
   replace);

    FinalFile = "c:\\Output.doc";
    WordDocument1->SaveAs(FinalFile);
    WordDocument1->Close();
    WordApplication1->Application->Visible = True;

    OleContainer1->CreateLinkToFile(FinalFile, false);
    OleContainer1->Refresh();
}

//---------------------------------------------------------------------------


Может Это из за MS Office 2003 ? У меня он стоит. Хотя бред какой-то...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог