Inserir ComObj no uses
procedure TFormFiltro.ExportaWordClick(Sender: TObject);
var MsWord: Variant;
S1, S2, S3, Sa, Sb, Sc, Sd, STitulo: string;
begin
{ Abre o Word }
MsWord := CreateOleObject('Word.Application');
try
{ Novo documento }
MsWord.Documents.Add;
with TFormProgresso.Create(nil) do //Para criar um form para mostrar o progresso
try
ProgressBar1.Max := DMAvarias.QyFiltro.RecordCount;
Show; // show a splash screen contain ProgressBar control
Update; // force display of Form5
DMAvarias.QyFiltro.First;
STitulo:= DMAvarias.QyFiltro.fieldbyname('Equipamento').AsString;
STitulo:= STitulo + ' ';
STitulo:= STitulo + DMAvarias.QyFiltro.fieldbyname('Marca').AsString;
MsWord.Selection.TypeText(Text:= STitulo);
MsWord.Selection.TypeParagraph;
while not DMAvarias.QyFiltro.Eof do
begin
MsWord.Selection.TypeParagraph;
Sa:= DMAvarias.QyFiltro.fieldbyname('Equipamento').AsString;
Sb:= DMAvarias.QyFiltro.fieldbyname('Marca').AsString;
Sc:= DMAvarias.QyFiltro.fieldbyname('Modelo').AsString;
Sd:= DMAvarias.QyFiltro.fieldbyname('Chassis').AsString;
S2:= 'Sintoma: ' + DMAvarias.QyFiltro.fieldbyname('Sintoma').AsString;
S3:= 'Defeito: ' + DMAvarias.QyFiltro.fieldbyname('Defeito').AsString;
if Sb<>'' then S1:= Sa+', '+Sb;
if Sc<>'' then S1:= S1+', '+Sc;
if Sd<>'' then S1:= S1+', '+Sd;
MsWord.Selection.TypeText(Text:= S1);
MsWord.Selection.TypeParagraph;
MsWord.Selection.TypeText(Text:= S2);
MsWord.Selection.TypeParagraph;
MsWord.Selection.TypeText(Text:= S3);
MsWord.Selection.TypeParagraph;
DMAvarias.QyFiltro.Next;
ProgressBar1.StepBy(1);
end;
MsWord.ActiveDocument.SaveAs(FileName := 'd:'+STitulo+'.doc'); //Salva o arquivo
finally
Free;
end;
finally
MsWord.ActiveDocument.Close(SaveChanges := 0); { Fecha documento }
MsWord.Quit; { Fecha o Word }
end;
SHOWMESSAGE(' Ficheiro criado! ');
end;