Criar documento word com ´Word.Basic´

Delphi

02/10/2005

Procurei bastante no forum mas nada me ajudou...

Por favor tenho 2 perguntas:

1- Como faço para gravar um documento criado com o ´Word.Basic´?

Usei esse método mas só salva o texto, as tabelas não...

MSWord.FileSaveAs(´C:test.doc´, 3); //Salva o arquivo

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

2- Criei uma tabela e quero colocar um texto logo abaixo dela, como sair
de uma tabela e escrever logo depois dela ?

Usei esse comando mas não acontece nada..

MSWord.Selection.MoveDown(count:=1);

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

Segue abaixo o meu código...qualquer ajuda é bem vinda..

procedure TQRImpPedidos.Button1Click(Sender: TObject);
var MSWord: Variant;
begin
try
MSWord:= CreateOleObject(´Word.Basic´);
MSWord.Filenew;

MSWord.Font(´Arial´);
MSWord.CenterPara;
MSWord.FontSize(14);
MSWord.insert(#13);
MSWord.bold;
MSWord.insert(´PEDIDO DE PRODUTOS SIDERÚRGICOS´);
MSWord.bold(False);

MSWord.FontSize(8);
MSWord.insert(13 + 13 + 13 + 13 + 13);

MSWord.tableinserttable(NumColumns:=1, NumRows:=1);
MSWord.TableSelectTable;
MSWord.TableAutoFormat(Format := 16);
MSWord.startOfRow;
//------------------------------------------------------------------------------
MSWord.insert(13);
MSWord.Font(´Arial´);
MSWord.CenterPara;
MSWord.FontSize(8);
MSWord.bold;
MSWord.insert(´DADOS DO CLIENTE´);
MSWord.insert(13);
MSWord.nextcell;

MSWord.Font(´Arial´);
MSWord.LeftPara;
MSWord.FontSize(8);
MSWord.bold(False);

MSWord.insert(´CÓDIGO: ´);
MSWord.nextcell;

MSWord.insert(´NOME FANTASIA: ´);
MSWord.nextcell;

MSWord.insert(´CONTATO: ´ );
MSWord.nextcell;

MSWord.insert(´RAZÃO SOCIAL: ´ );
MSWord.nextcell;

MSWord.insert(´TELEFONE: ´ );
MSWord.nextcell;

MSWord.insert(´RUA: ´ );
MSWord.nextcell;

MSWord.insert(´BAIRRO: ´ );
MSWord.nextcell;

MSWord.insert(´CIDADE: ´) ;
MSWord.nextcell;

MSWord.insert(´CEP: ´ );
MSWord.nextcell;

MSWord.insert(´CNPJ/CPF: ´ );
MSWord.nextcell;

MSWord.insert(´INSCR.ESTADUAL: ´ );
MSWord.nextcell;

MSWord.insert(´E-MAIL: ´ );
MSWord.nextcell;
//------------------------------------------------------------------------------
MSWord.Font(´Tahoma´);
MSWord.CenterPara;
MSWord.FontSize(8);
MSWord.insert(´DESCRIÇÃO DOS PRODUTOS´);
MSWord.NextCell;

MSWord.tableselectRow;
MSWord.tableSplitCells(NumColumns:=8, NumRows:=2);
MSWord.CenterPara;
MSWord.FontSize(8);

MSWord.NextCell;
MSWord.Insert(´PRODUTO´);

MSWord.NextCell;
MSWord.Insert(´DIMENSÕES´);

MSWord.NextCell;
MSWord.Insert(´QUANT.´);

MSWord.NextCell;
MSWord.Insert(´REFERÊNCIA´);

MSWord.NextCell;
MSWord.Insert(´VL. UNIT.´);

MSWord.NextCell;
MSWord.Insert(´VL. TOTAL´);

MSWord.NextCell;
MSWord.Insert(´COMISSÃO´);

MSWord.NextCell;
MSWord.Insert(´LUCRO´);
//------------------------------------------------------------------------------
MSWord.FontSize(7);
MSWord.NextCell;
MSWord.Insert(´´);

MSWord.NextCell;
MSWord.Insert(´(mm)´);

MSWord.NextCell;
MSWord.Insert(´(kg)´);

MSWord.NextCell;
MSWord.Insert(´´);

MSWord.NextCell;
MSWord.Insert(´(R$ / t)´);

MSWord.NextCell;
MSWord.Insert(´(R$)´);

MSWord.NextCell;
MSWord.Insert(´(¬)´);

MSWord.NextCell;
MSWord.Insert(´(¬)´);
//------------------------------------------------------------------------------

MSWord.Selection.MoveDown(count:=1);
MSWord.Insert(´Teste´);
finally
MSWord.FileSaveAs(´C:test.doc´, 3); //Salva o arquivo
MSWord.Appclose;
end;
end;



obrigado...


Analyst

Analyst

Curtidas 0

Respostas

Marcio.theis

Marcio.theis

02/10/2005

De uma olhada neste exemplo:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  Word: Variant;
begin
Word:=CreateOleObject(´Word.Application´);
try
    Word.Documents.Add;
    try
        Word.ActiveDocument.Tables.Add(Range:=Word.Selection.Range, NumRows:=2, NumColumns:=3);
        Word.Selection.TypeText(Text := ´Linha 1, Coluna 1´);
        Word.Selection.MoveRight(12);
        Word.Selection.TypeText(Text := ´Linha 1, Coluna 2´);
        Word.Selection.MoveRight(12);
        Word.Selection.TypeText(Text := ´Linha 1, Coluna 3´);
        Word.Selection.MoveRight(12);
        Word.Selection.TypeText(Text := ´Linha 2, Coluna 1´);
        Word.Selection.MoveRight(12);
        Word.Selection.TypeText(Text := ´Linha 2, Coluna 2´);
        Word.Selection.MoveRight(12);
        Word.Selection.TypeText(Text := ´Linha 2, Coluna 3´);
        Word.Selection.Tables.Item(1).Select;
        Word.Selection.Cells.AutoFit;
        Word.ActiveDocument.SaveAs(FileName := ´c:\Tabela.doc´);
  finally
        Word.ActiveDocument.Close(SaveChanges := 0);
        end;
finally
    Word.Quit;
    end;
end;



GOSTEI 0
Analyst

Analyst

02/10/2005

Obrigado pela dica já conhecia só não estou usando assim pois não consigo centralizar o texto dentro da coluna será que vc sabe?

Senão será que alguem sabe como usar sair de uma tabela e salvar o documento com a formatação da tabela usando ´Word.Basic´ ?


GOSTEI 0
Analyst

Analyst

02/10/2005

Bom consegui salvar era só ter mudado o parametro 3 para 0 rsrsrsr

MSWord.FileSaveAs(´C:test.doc´, 0); //Salva o arquivo

Agora só me resta essa dúvida, por favor me ajudem

[b:b723c7c37e]2- Criei uma tabela e quero colocar um texto logo abaixo dela, como sair
de uma tabela e escrever logo depois dela ?

Usei esse comando mas não acontece nada..

MSWord.Selection.MoveDown(count:=1); [/b:b723c7c37e]

Me ajudem......


GOSTEI 0
Analyst

Analyst

02/10/2005

Em resumo quero isso, independente de como criar o documento word.

ola...

Gostaria de saber se alguem poderia me enviar dar alguma dica de como montar uma tabela no word com a seguinte formatação:

Uma tabela que tenha uma coluna apenas nas 5 primeiras linhas e que o texto fique alinhado centralizado somente na primeira linha. Nas 4 linhas seguintes o texto fique alinhado a esquerda.

Seguindo, logo abaixo das 5 linhas gostaria tivesse mais 3 linhas mas com 8 colunas e todas com o texto centralizado.

Por ultimo, a tabela voltaria a ter 1 linha e com somente 2 colunas todas alinhas a esquerda.


Será que alguem pode me ajudar?

Até a oitava linha, aquela que tem 8 colunas, eu tenho uma idéia de como fazer, o problema é voltar a tabela ter 1 linha com duas colunas.

Não importa como fazer, se vão usar 1,2 ou 3 tabelas preciso desse padrão.
Depois de conseguir fazer o que eu quero, coloco aqui no fórum com o intuito de ajudar, pois já procurei bastante e percebi que tem muita gente com dúvidas....

Obrigado,....


GOSTEI 0
POSTAR