Fórum Como abrir um doc do Word via programação ? #288016
13/07/2005
0
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
Curtir tópico
+ 0Posts
14/07/2005
Paullsoftware
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);
Gostei + 0
15/07/2005
Ant.carlos/sp
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
Gostei + 0
19/07/2005
Paullsoftware
se voltar a mostrar o erro post aqui o erro... :wink:
Gostei + 0
20/07/2005
Ant.carlos/sp
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;
-----------------------------------
Gostei + 0
21/07/2005
Ant.carlos/sp
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.
----------------------------------------------------------
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)