Конференция "Corba" » Вставка текста в MS Word средствами Delphi [D7, WinXP]
 
  • Upi (04.03.11 15:09) [0]
    Суть проблемы: есть некий тест отвечая на вопросы которого формируется вордовский документ => необходимо решить проблему вставки текста в документ (предположим что текст был изначально выгружен в поле Memo1 из файла 1.txt). Задача создать процедуру которая будет дописывать в конец документа текст из поля мемо или напрямую из txt файла как вам удобнее.
    Помогите пожалуйста.
  • clickmaker © (04.03.11 15:29) [1]
    TWordApplication с вкладки Servers.
    Примеров издевательства над вордом из дельфи в инете - море
  • rodionov_uv (04.03.11 15:57) [2]
    uses ComObj;

    var W:variant;

    procedure TForm1 .Button1Click(Sender: TObject);
    begin
     if not OpenDialog1.Execute then
     exit
     else
     begin
       W:=CreateOleObject('Word.Application);
       W.Documents.Add(OpenDialog1.FileName);
       W.Visible := True;
    ................................
    end;



    чтобы закрыть документ

    W.ActiveDocument.Close;
      W.Quit;
      W := Unassigned;

  • rodionov_uv (04.03.11 16:11) [3]
    Вот конкретно для тебя

    Вставка из Memo в конец документа


    procedure Form1.ButtonlClick(Sender: TObject);
    begin
    W.ActiveDocument.Range.InsertAfter(Memo1.Text) ;
    end;



    Вставка из Memo в начало документа


    procedure Form1.Button2Click(Sender: TObject);
    begin
    W.ActiveDocument.Range.InsertBefore(Memo1.Text) ;
    end;

  • Upi (04.03.11 16:18) [4]
    насколько я понял для вставки док-т должен быть открыт? неработает =(

    вопрос в том как все это сделать в закрытом документе чтобы ничего не подозревающий пользователь в процессе работы док-т не закрыл, ибо вставлять текста придется много и возможно эта вставка потребует времени
  • clickmaker © (04.03.11 16:20) [5]
    > вопрос в том как все это сделать в закрытом документе

    не делать W.Visible := True
  • Upi (04.03.11 16:27) [6]
    OpenDialog1 как объявить? ошибку дает
  • clickmaker © (04.03.11 16:28) [7]
    > OpenDialog1 как объявить? ошибку дает

    объяви его персоной нон-грата
  • Upi (04.03.11 16:30) [8]
    объявил терь другая строка ошибку дает)))
  • Upi (04.03.11 16:34) [9]
    unit Unit1;

    interface

    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, StdCtrls;

    type
     TForm1 = class(TForm)
       Button1: TButton;
       Memo1: TMemo;
       procedure Button1Click(Sender: TObject);
     private
       { Private declarations }
     public
       { Public declarations }
     end;

    var
     Form1: TForm1;

    implementation  {$R *.dfm}

    uses ComObj;

    var W:variant;
       OpenDialog1 : TOpenDialog;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
     if not OpenDialog1.Execute then {дает ошибку при нажатии кнопки}
    exit
    else
    begin
      W:=CreateOleObject('Word.Application');
      W.Documents.Add(OpenDialog1.FileName);
      W.Visible := True;
      W.ActiveDocument.Range.InsertAfter(Memo1.Text) ;
    end;

    end;

    end.


    как исправить?))
  • rodionov_uv (04.03.11 16:34) [10]
    OpenDialog1 это компонент на вкладке Dialogs

    ну cделай False если не хочешь видеть
  • Upi (04.03.11 16:37) [11]
    тааак заработало... осталось сделать так чтобы пользователю не нужно было выбирать в ручную док-т для которого нужно эти манипуляции делать) помогите
  • rodionov_uv (04.03.11 16:42) [12]
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, ComObj;

    type
    TForm1 = class(TForm)
      Button1: TButton;
      Memo1: TMemo;
      procedure Button1Click(Sender: TObject);
    private
      { Private declarations }
    public
    W:variant;
      { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation  {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);
    begin
     if not OpenDialog1.Execute then {дает ошибку при нажатии кнопки}
     exit
     else
     begin
       W:=CreateOleObject('Word.Application');
       W.Documents.Add(OpenDialog1.FileName);
       W.Visible := False;
       W.ActiveDocument.Range.InsertAfter(Memo1.Text) ;
     end;

    end;

    end.

  • Upi (04.03.11 16:43) [13]
    и сохранять изменения в док-те так же можно без подтверждений? если нет то хотябы научите чтоб эта процедура работала с заранее заданным документом чтоб пользователю минимум нагрузки на мозг
  • KilkennyCat © (04.03.11 16:46) [14]
    ты сам-то знаешь имя и путь заранее заданного документа? дай максимум нагрузки на свой мозг.
  • Upi (04.03.11 16:47) [15]
    так разобрался спасибо
  • Upi (04.03.11 16:48) [16]
    да я все знаю просто шаблон документа с каким то общим текстом уже имеется и именно в конец него нужно было все это добавить но я уже сам разобрался что куда вбивать чтобы работало СПАСИБО
  • clickmaker © (04.03.11 16:49) [17]
    ждем очередного репортажа с орбиты
  • KilkennyCat © (04.03.11 17:57) [18]

    > да я все знаю

    смешно.
  • iopta (27.04.12 08:49) [19]

    > Вставка текста в MS Word средствами Delphi

    Соси хуй пидар, нихуя нигде нету, а где есть намёк, что есть, только и написано, что в инете море инфы, это и сеть инет, так что не выёбывайся, утырок ебливый
 
Конференция "Corba" » Вставка текста в MS Word средствами Delphi [D7, WinXP]
Есть новые Нет новых   [118451   +44][b:0][p:0.002]