-
Суть проблемы: есть некий тест отвечая на вопросы которого формируется вордовский документ => необходимо решить проблему вставки текста в документ (предположим что текст был изначально выгружен в поле Memo1 из файла 1.txt). Задача создать процедуру которая будет дописывать в конец документа текст из поля мемо или напрямую из txt файла как вам удобнее. Помогите пожалуйста.
-
TWordApplication с вкладки Servers. Примеров издевательства над вордом из дельфи в инете - море
-
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;
-
Вот конкретно для тебя Вставка из 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;
-
насколько я понял для вставки док-т должен быть открыт? неработает =(
вопрос в том как все это сделать в закрытом документе чтобы ничего не подозревающий пользователь в процессе работы док-т не закрыл, ибо вставлять текста придется много и возможно эта вставка потребует времени
-
> вопрос в том как все это сделать в закрытом документе
не делать W.Visible := True
-
OpenDialog1 как объявить? ошибку дает
-
> OpenDialog1 как объявить? ошибку дает
объяви его персоной нон-грата
-
объявил терь другая строка ошибку дает)))
-
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
public
end;
var
Form1: TForm1;
implementation
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.
как исправить?))
-
OpenDialog1 это компонент на вкладке Dialogs
ну cделай False если не хочешь видеть
-
тааак заработало... осталось сделать так чтобы пользователю не нужно было выбирать в ручную док-т для которого нужно эти манипуляции делать) помогите
-
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
public
W:variant;
end;
var
Form1: TForm1;
implementation
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.
-
и сохранять изменения в док-те так же можно без подтверждений? если нет то хотябы научите чтоб эта процедура работала с заранее заданным документом чтоб пользователю минимум нагрузки на мозг
-
ты сам-то знаешь имя и путь заранее заданного документа? дай максимум нагрузки на свой мозг.
-
так разобрался спасибо
-
да я все знаю просто шаблон документа с каким то общим текстом уже имеется и именно в конец него нужно было все это добавить но я уже сам разобрался что куда вбивать чтобы работало СПАСИБО
-
ждем очередного репортажа с орбиты
-
> да я все знаю
смешно.
-
> Вставка текста в MS Word средствами Delphi
Соси хуй пидар, нихуя нигде нету, а где есть намёк, что есть, только и написано, что в инете море инфы, это и сеть инет, так что не выёбывайся, утырок ебливый
|