procedure TForm8.Button2Click(Sender: TObject);
const
marker: array[1..6] of string[25] =
('%sotrudnik%',
'%date_in%',
'%date_out%',
'%station%',
'%msku%',
'%akty%');
var
FTrue, Ffalse, Template, NewTemplate, ItemIndex1, R, D, DD, Replese_T, Find_T: OleVariant;
Tbl, L, col: OleVariant;
j: integer;
transgaz : String;
sau : String;
begin
if (trim(Edit1.Text) = '') Then
begin
if MessageBox(Handle,PChar('Не указан путь к info-файлу!'#13#10'Операция не может быть выполнена!'),PChar('Недопустимое значение полей'),MB_ICONERROR+MB_OK)= mrOk then exit;
end;
if (trim(Edit3.Text) = '') Then
begin
if MessageBox(Handle,PChar('Не указан каталог с документами!'#13#10'Операция не может быть выполнена!'),PChar('Недопустимое значение полей'),MB_ICONERROR+MB_OK)= mrOk then exit;
end;
Xlsdoc := CreateOleObject('Excel.Application');
Xlsdoc.Workbooks.Open(Edit1.Text);
Xlsdoc.Visible := False;
transgaz := Xlsdoc.Range['B3'];
sau := Xlsdoc.Range['B2'];
Xlsdoc.Workbooks.Close;
Xlsdoc.Quit;
Xlsdoc:=UnAssigned;
Memo1.Lines.Add('Соединение с шаблоном реестра документов...');
Application.ProcessMessages;
try
WA2.Connect;
WA2.Visible := False;
Template := EmptyParam;
NewTemplate := False;
FTrue := true;
Ffalse := false;
except
ShowMessage('Не удалось соедениться с шаблоном реестра документов!');
Memo1.Lines.Add('Не удалось соедениться с шаблоном реестра документов!' );
Application.ProcessMessages;
exit;
end;
Memo1.Lines.Add('Создаем реестр документов...');
Application.ProcessMessages;
try
R := ExtractFilePath(Application.ExeName)+'\Shablon\Reestr.dot';
ItemIndex1 := WA2.Documents.Add(R, NewTemplate, NewTemplate, Template);
WD2.ConnectTo(WA2.Documents.Item(ItemIndex1));
except
Memo1.Lines.Add('Не удалось соедениться с шаблоном реестра документов (Reestr.dot)! Проверьте расположение файла!' );
Application.ProcessMessages;
ShowMessage('Не удалось соедениться с шаблоном реестра документов (Reestr.dot)! Проверьте расположение файла!');
WD2.Application.Selection.EndOf(Template, Template);
WA2.Application.WindowState := wdWindowStateMaximize;
WA2.Application.ScreenUpdating := true;
WA2.Application.ScreenRefresh;
WA2.Visible := true;
WA2.Disconnect;
WD2.Disconnect;
exit;
end;
try
col := WA2.ActiveDocument.Tables.Count;
for j := 1 to col do
begin
Memo1.Lines.Add('Подключаемся к приложению MS Word...'+Inttostr(j));
Application.ProcessMessages;
tbl := WA2.ActiveDocument.Tables.Item(j);
end;
L := wdStory;
WA2.Selection.HomeKey(L, EmptyParam);
Memo1.Lines.Add('Заменяем маркеры на текст...' );
Application.ProcessMessages;
Find_T := '%sotrudnik%';
D := wdFindStop;
DD := wdReplaceAll;
Replese_T := ComboBox1.Text;
WA2.Selection.Find.Execute(Find_T, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, D, EmptyParam,
Replese_T, DD, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
Find_T := '%date_in%';
Replese_T := DateToStr(DateTimePicker1.Date);
WA2.Selection.Find.Execute(Find_T, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, D, EmptyParam,
Replese_T, DD, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
Find_T := '%date_out%';
Replese_T := DateToStr(DateTimePicker2.Date);
WA2.Selection.Find.Execute(Find_T, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, D, EmptyParam,
Replese_T, DD, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
Find_T := '%station%';
Replese_T := transgaz;
WA2.Selection.Find.Execute(Find_T, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, D, EmptyParam,
Replese_T, DD, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
Find_T := '%msku%';
Replese_T := sau;
WA2.Selection.Find.Execute(Find_T, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, D, EmptyParam,
Replese_T, DD, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
Find_T := '%akty%';
Replese_T := docs;
WA2.Selection.Find.Execute(Find_T, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, D, EmptyParam,
Replese_T, DD, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
WD2.Application.Selection.EndOf(Template, Template);
except
WA2.Visible := true;
WA2.Disconnect;
WD2.Disconnect;
Memo1.Lines.Add('Ошибка!' );
Application.ProcessMessages;
exit;
end;
Memo1.Lines.Add('Экспорт завершен.' );
Application.ProcessMessages;
WA2.Visible := True;
Name2 := (ExtractFilePath(Application.ExeName)+'Реестр_документов_'+FormatDateTime('ddmmyyyy_hhmm', Now)+'.doc');
WD2.SaveAs(Name2);
WD2.Disconnect;
WA2.Disconnect;
WA2.Quit;
MessageBox(Handle,PChar('Создание реестра документов выполнено успешно!'),PChar('Успех!'),MB_ICONINFORMATION+MB_OK);
end;