Estimado,

Bom dia. Pode ser que o negócio com o RUINDOWS seja mais embaixo: Tente
usar assim:

// Crie uma function para detectar a classe que cê quer chamar: não se
esqueças dos uses de 'praxe': 
// ComObj, ActiveX, OleServer, Word97, Word2000, ComCtrls, e sabe-se lá
Deus mais o quê (esse ruindows é chato)

function Detecta_ClassID(const ClassName: string): IDispatch;
var
  ClassID: TGUID;
  Unknown: IUnknown;
begin
  ClassID := ProgIDToClassID (ClassName);
  if Succeeded (GetActiveObject (ClassID, nil, Unknown)) then
    OleCheck (Unknown.QueryInterface (IDispatch, Result))
  else
    Result := CreateOleObject (ClassName);
end;

Isso aí cê cria logo depois do seu {$R *.dfm ou xfm} da vida...

var
  frmSEUFORM: TfrmSEUFORM;

implementation

{$R *.dfm}

uses uUNITSUA1,uUNITSUA2, ...blabla...;

function Detecta_ClassID(const ClassName: string): IDispatch;
............

OK! Beleza então. Depois, os seus variants ao longo do programa, porém,
como OLEVARIANT:

Var WinWord, Docs, Doc : OleVariant;   // Por incrível que pareca
estimado, crie variáveis um pouco diferentes né:
                                       //
procedure TfrmSEUFORM.BtnGeraContratoClick(Sender);
var 
    MsWord, WorkSpace, Documento : OleVariant;
begin
    MsWord := Detecta_ClassID('Word.Application'); 
    WorkSpace := MsWord.Documents;
    Documento := WorkSpace.Open('c:\seudoc.doc');    
    {seus procedimentos}
    .... 
    Documento.SaveAs('c:\seudoc.doc');
    Documento.Close();
end;


Tente aí e retorne pra gente saber se deu certo, valew.

Saudações.

---
[]'s

Alexandre
 
Frase da semana: "Frase da semana: "Não atrase seu progresso com o medo
de fracassar." (Nathiel Hover)



-----Mensagem original-----
De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED]
Em nome de Edmilson Pontes
Enviada em: quinta-feira, 22 de setembro de 2005 09:13
Para: delphi-br@yahoogrupos.com.br
Assunto: Re: [delphi-br] Re: Doc Word - Ainda não consegui

Tentei
if not Assigned (WinWord) then
    WinWord := CreateOleObject('Word.Application');
Mas não compila. Ocorre o erro: "[Error]
UGerarContrato.pas(809): Incompatible types".


--- ricknetbr <[EMAIL PROTECTED]> escreveu:


---------------------------------
Antes de chamar o CreateOleObject, verifique se o
mesmo ja nao esta
carregado.

if not Assigned (WinWord) then
    WinWord := CreateOleObject('Word.Application');
     .
     . 
     .


--- Em delphi-br@yahoogrupos.com.br, Edmilson Pontes
<[EMAIL PROTECTED]> escreveu
> Colegas,
> Tô com este problema pendente. Me ajudem pro favor.
> Tenho um programa gerador de contratos, que gravar
> texto num arquivo (modelo de carta) do word.
> Para cada novo contrato executa o código abaixo para
> criar o arquivo e salvar as alterações.
> 
>    var WinWord, Docs, Doc : Variant;
> 
>    //objetos do tipo Variant
>    WinWord := CreateOleObject('Word.Application');
>    Docs := WinWord.Documents;
>    Doc := Docs.Open(c:\modelo.doc');
>    {Rotinas internas do programa}
>    Doc.SaveAs('c:\novo.doc');
>    Doc.Close();
> O programa tá funcionando beleza mas o problema é
que
> está consumindo muita memória,
> pois para cada arquivo é criado um processo WINWORD
> (no gerenciador de tarefas).
> É impressionante a disproporção de memória usada em
> relação aos outros processos do windows.
> Como faço para resolver isso?
> Para cada processo é necessário criar os três
objetos.
> OBS.: Utilizo thread para criar os objetos, pois
> consome muito processamento também.
> 
> Desde já agradeço qualquer ajuda,
> 
> Edmison Pontes
> 
> 
>       
> 
> 
> 




-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a