GARANTIR DESCONTO

Fórum Como abrir um doc do Word via programação ? #288016

13/07/2005

0

Olá!

Desejaria saber como abrir um documento WORDC.doc em tempo de execução e após o execucao verificar se o mesmo foi fechado ou ainda está aberto.

Desde já meus agradecimentos.

T+

ANT.CARLOS/SP


Ant.carlos/sp

Ant.carlos/sp

Responder

Posts

14/07/2005

Paullsoftware

cara existe muitos tópicos que falando sobre como tratar o word um exemplo básico que como criar um documento...
Uses ComObj
procedure TForm1.Button1Click(Sender: TObject);
var
  MSWord: Variant;
begin
  MSWord:= CreateOleObject (´Word.Basic´);
  MSWord.AppShow;//mostra o word
  MSWord.FileNew;//inicia um novo documento
  MSWord.insert(´Contrato de Locação´); //Escreve algo
  MSWord.insert(#13+´Contrato de Locação´);//Pula uma linha e escreve
  MSWord.FontSize(24);//muda o tamanho da fonte
  MSWord.italic;//coloca italico
  MSWord.bold;//coloca negrito
  MSWord.underline;//sublina
  MSWord.insert(13+´Contrato de Locação´);//pula a linha e escreve novamente
  MSWord.FontSize(12);//muda o tamanho da fonte
  MSWord.Font(´Arial´);//muda a fonte usada
  MSWord.underline(false);//retira o sublinhado
  MSWord.italic(false);//retira o italico
  MSWord.bold(false);//retira o bold
  MSWord.insert(#13 +´teste´);
  MSWord.insert(13+9 +´teste´);//nova linha e um TAB
  MSWord.insert(13+Table1Razao_Social.Value);//insere algo de uma tabela
  MSWord.LineUp(2, 1); //seleciona uma parte do texto
  MSWord.TextToTable(ConvertFrom := 2, NumColumns := 1);// monta uma tabela com o texto selecionado
  MSWord.FileSaveAs(´c:\temp\test.txt´, 3); //Salva o arquivo
end;


[b:167fdd91be]
MSWord.JustifyPara; // alinhamento justificado
MSWord.RightPara; // alinhamento a direita
MSWord.LeftPara; // alinhamento a esquerda
MSWord.InsertPageBreak; // quebrar página[/b:167fdd91be]

para saber se o word está aberto vc faz assim:

[b:167fdd91be]if FindWindow(´OpusApp´, nil) > 0 then
ShowMessage(´O Word está aberto´)
else
ShowMessage(´O Word NÃO está aberto´);
[/b:167fdd91be]

se vc possui o delphi 7 vá até a paleta servers procure pelo componente wordapplication e no evento onclick de um button faça:


procedure TForm1.btAbrirClick(Sender: TObject);
var
oleArquivo: OleVariant;
begin
if OpenDialog1.Execute then
begin
oleArquivo := OpenDialog1.FileName;
Usando o código abaixo vc abre um documento
estou usando o componente OpenDialog
[color=darkblue:167fdd91be][i:167fdd91be]// ABRIR[/i:167fdd91be][/color:167fdd91be]
WordApplication1.Documents.Open(oleArquivo, EmptyParam, EmptyParam, EmptyParam,
        EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
        EmptyParam, EmptyParam);

    WordApplication1.WindowState  := wdWindowStateNormal;
    WordApplication1.Caption      := ´Delphi conquista o Word!´;
    WordApplication1.Visible      := True; //False para executar sem mostrar o word...

end;
end;[/code

[color=blue:167fdd91be][i:167fdd91be]
 // IMPRIMIR
[/i:167fdd91be][/color:167fdd91be]
[code]
WordApplication1.ActiveDocument.PrintOut(
    EmptyParam,EmptyParam,EmptyParam,
    EmptyParam, EmptyParam,EmptyParam,
    EmptyParam,EmptyParam,EmptyParam,
    EmptyParam,EmptyParam,EmptyParam,
      EmptyParam,EmptyParam, EmptyParam,
      EmptyParam, EmptyParam, EmptyParam);



Responder

Gostei + 0

15/07/2005

Ant.carlos/sp

Olá!

Sou Desenv. D7 + IB/FB + DBEXPRESS.


O código abaixo causa um erro ao executa o:
WordApplication1.Documents.Open, Erro: ´Tipo não corresponde´


----------------------------
var oleArquivo: OleVariant;
EmptyParam : OleVariant;

begin
EmptyParam := ´´;
oleArquivo := ´CARTA_ANIVERSARIO.DOC´;

WordApplication1.Documents.Open(oleArquivo, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam);

WordApplication1.WindowState := wdWindowStateNormal;
WordApplication1.Caption := ´Delphi conquista o Word!´;
WordApplication1.Visible := True; //False para executar sem mostrar o word...
end;
----------------------------

Desde já meus agradecimentos.

ANT.CARLOS/SP


Responder

Gostei + 0

19/07/2005

Paullsoftware

desulpa esqueci de comentar, tente acrescentar na seção uses da unit a unit [i:c9a47d43fa][b:c9a47d43fa]Word2000, Wordxp[/b:c9a47d43fa][/i:c9a47d43fa]...

se voltar a mostrar o erro post aqui o erro... :wink:


Responder

Gostei + 0

20/07/2005

Ant.carlos/sp

Caro amigo!
O erro ainda continua.

-------------------------------
Erro: Tipo não corresponde
--------------------------------

Só não consigo abrir o Word + arquivo.doc,
pois para abrir+Pesquisar flags e alterar + imprimir, funciona.

Desde já meus agradecimentos

ANT.CARLOS/SP


uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, Buttons, Db, DBTables, ExtCtrls, FMTBcd,ComObj, OleServer, Word2000;

------------------------------
var oleArquivo: OleVariant;
EmptyParam : OleVariant;

begin
EmptyParam := ´´;
oleArquivo := ´C:\ACEINFO\APLICATIVO\CARTA_ANIVERSARIO.DOC´;

WordApplication1.Documents.Open(oleArquivo, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam);

WordApplication1.WindowState := wdWindowStateNormal;
WordApplication1.Caption := ´Delphi conquista o Word!´;
WordApplication1.Visible := True; //False para executar sem mostrar o word...
end;


-----------------------------------


Responder

Gostei + 0

21/07/2005

Ant.carlos/sp

Cara amigo! :D
Não sei a que cargas d´gua se deva, mas crieu uma nova aplicação
e testei novamente o código p/ abrir o Word e não é que funcionou
sem erro. :roll:

Vai ai o código completo

Obrigado pela atenção!

T+

ANT.CARLOS/SP

----------------------------------------------------------
unit FDialg_Edita_Cartas;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleServer, Word2000, StdCtrls, ExtCtrls, Buttons;

type
TFdlg_Edita_Cartas = class(TForm)
OpenDialog1: TOpenDialog;
WordApplication1: TWordApplication;
RadioGroup1: TRadioGroup;
Bit_cancelar: TBitBtn;
procedure RadioGroup1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Fdlg_Edita_Cartas: TFdlg_Edita_Cartas;

implementation

{$R *.dfm}


procedure TFdlg_Edita_Cartas.RadioGroup1Click(Sender: TObject);
var oleArquivo: OleVariant;

begin
oleArquivo := ´C:\ACEINFO\APLICATIVO\CARTA_ANIVERSARIO.DOC´;

WordApplication1.Documents.Open(oleArquivo, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam);

WordApplication1.WindowState := wdWindowStatemaximize;

WordApplication1.Caption := ´Delphi conquista o Word!´;
WordApplication1.Visible := True; //False para executar sem mostrar o word...

end;

end.
----------------------------------------------------------


Responder

Gostei + 0

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

Aceitar