Fórum word com delphi ´tá complicado não consigo fazer´ #187821

10/10/2003

0

Gostaria de fazer um contrato no word e poder abri-lo do meu sistema e podendo ainda alterar algumas palavras no word por campos do meu bco de dados, por exemplo é um contrato de locação e colocar os devidos dados como nome do locador entre outros. Já vi alguns exemplos pela pesquisa aqui no forum mas não consegui fazer alguém pode me ajudar. Abaixo coloco um exemplo q encontrei aqui no fórum e achei q daria certo mas não consigo usá-lo:

procedure TFrmCadImoveis.BitBtn1Click(Sender: TObject);
var
WinWord, Docs, Doc: Variant;
diretorio, dirbase, arquivo, {bairro,} cod:string;
begin
diretorio:=dProcessos.directory;
gbModelos.visible:=false;
if TbContrato.findkey([cbModelos.text])then // cbModelos é um combobox com a lista de modelos.
// Propostas é uma tabela com o nome dos modelos em um campo de index e
//outro campo com o path completo dos arquivos modelo.
cod:=TbContrato[´codigo´] // código da Proposta (não uso mais).
else
begin
ShowMessage(´Erro de Processamento´+#13+´Código do Modelo não encontrado´);
Modelos.close;
Contratos.close;
exit;
end;
end;
arquivo:=emptystr;
arquivo:=inputbox(´Geração conforme Modelo´,´O Nome do Arquivo a ser gerado´,arquivo);
VelhoWord:=AdiquiraOuCrieObjeto(´Word.Basic´);
NovoWord :=AdiquiraOuCrieObjeto(´Word.Application´);
// Tornar o word visivel
NovoWord.Visible := True;
// Abrir arquivo para edição
Doc:= NovoWord.Documents.Open(´c:\Contratos\´+cbModelos.text);
Doc.SaveAs(diretorio + ´\´ + arquivo+´.doc´);
Doc.Close;
Doc:= NovoWord.Documents.Open(diretorio + ´\´ + arquivo+´.doc´);
// Substituir itens do arquivo por texto escolhido
//if edtbairro.text<>null then bairro:=´ - ´+ edtbairro.text else bairro:=emptystr;
Doc.Content.Find.Execute(FindText := ´LOCADORN´ , ReplaceWith := TbImoveisLOCADOR.Value);
Doc.Content.Find.Execute(FindText := ´nacionalidaden´ , ReplaceWith := TbImoveisNACIO.Value);
Doc.Content.Find.Execute(FindText := ´estadociviln´ , ReplaceWith := TbImoveisESCIVIL.Value);
Doc.Content.Find.Execute(FindText := ´profissaon´ , ReplaceWith := TbImoveisPROFISSAO.Value);
Doc.Content.Find.Execute(FindText := ´CIN´ , ReplaceWith := TbImoveisCI.Value);
Doc.Content.Find.Execute(FindText := ´ORGAON´ , ReplaceWith := TbImoveisORGAO.Value);
Doc.Content.Find.Execute(FindText := ´CPFN´ , ReplaceWith := TbImoveisCPF.Value);
//if EditEmail.text<>null then bairro:=Emptystr else bairro:= ´Email: ´+EditEmail.text; {aproveitando a variavel bairro para email}
//Doc.Content.Find.Execute(FindText := ´MEmailM´ , ReplaceWith := bairro);
end;
Doc.Save;
if Application.MessageBox(´Deseja Imprimir este documento?´,´Confirmação´,MB_ICONQUESTION+MB_YESNO)=MRYes then
Doc.PrintOut(false);
// Fechar
NovoWord.Quit;
end;


Janete

Janete

Responder

Posts

13/10/2003

Marconi

Janete

Qual o erro que está dando ??

Este exemplo que voce colocou, parece que eu que pus no fórum. E para mim funciona bem..

Veja se voce não esqueceu de colocar na clausula USES ActiveX, ComObj, Excel97;

Este código abre o arquivo modelo, salva com o nome final, fecha, abre novamente já com o novo nome, procura algumas palavras chaves e as troca pelos valores de seu banco de dados, depois deixa o documento aberto para outras modificações.

Marconi


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar