GARANTIR DESCONTO

Fórum Delphi - Excel com várias abas #599300

19/12/2018

0

Boa tarde pessoal.
No código abaixo
Excel: Variant;

 Excel := CreateOleObject(''''Excel.Application'''');
 Excel.Visible := True;
 Excel.Workbooks.Add;
 Excel.Workbooks[1].WorkSheets[1].Name := ''''Aluno'''';
 Application.BringToFront;

 Excel.WorkBooks[1].Sheets[1].Cells[ContaLinha, 1] := ''''IdAluno'''';
 Excel.WorkBooks[1].Sheets[1].Cells[ContaLinha, 2] := ''''Matricula'''';

 Excel.WorkBooks[1].Sheets[1].Cells[ContaLinha, 1] :=  ''''2514'''';
  Excel.WorkBooks[1].Sheets[1].Cells[ContaLinha, 2] := ''''JOSE'''';


Agora como faço para logo abaixo desse código inserir outra aba(planilha) e continuar inserindo nela?
Leandro Carvalho

Leandro Carvalho

Responder

Post mais votado

22/12/2018

E, pra voltar a preencher uma aba que já foi tratada, basta atribuir a variável novamente:
var
  Excel: variant;
  Plan: variant;
begin
  Excel := CreateOleObject('Excel.Application');
  Excel.Visible := True;

  Excel.Workbooks.Add;

  Application.BringToFront;

  Plan := Excel.WorkBooks[1].Sheets[1];
  Plan.Name := 'Aluno';
  Plan.Cells[1, 1] := 'IdAluno';
  Plan.Cells[1, 2] := 'Matricula';
  Plan.Cells[2, 1] := '2514';
  Plan.Cells[2, 2] := 'JOSE';

  Plan := Excel.Workbooks[1].Sheets.Add(null, Plan); // adiciona planilha no fim (fica ativa)
  Plan.Name := '2o. Aluno';
  Plan.Cells[1, 1] := '2o. IdAluno';
  Plan.Cells[1, 2] := '2o. Matricula';
  Plan.Cells[2, 1] := '2o. 2515';
  Plan.Cells[2, 2] := '2o. MARIA';

  Plan := Excel.Workbooks[1].Sheets.Add(null, Plan); // adiciona planilha no fim (fica ativa)
  Plan.Name := '3o. Aluno';
  Plan.Cells[1, 1] := '3o. IdAluno';
  Plan.Cells[1, 2] := '3o. Matricula';
  Plan.Cells[2, 1] := '3o. 2516';
  Plan.Cells[2, 2] := '3o. PEDRO';

  Plan := Excel.WorkBooks[1].Sheets[1]; // volto para a planilha 1
  Plan.Cells[3, 1] := '2517';
  Plan.Cells[3, 2] := 'ANTONIO';
  Plan.Cells[4, 1] := '2518';
  Plan.Cells[4, 2] := 'JOANA';

end;

Emerson Nascimento

Emerson Nascimento
Responder

Gostei + 2

Mais Posts

20/12/2018

Leandro Carvalho

Bom dia
Alguém pode me ajudar.
Por favor.
Responder

Gostei + 0

20/12/2018

Flavio Silva

provavelmente você vai usar o índice 2
Excel.Workbooks[2]
Responder

Gostei + 0

20/12/2018

Leandro Carvalho

Caro Flávio.<br />
<br />
Isso não funciona.<br />
Já tentei várias coisas e não dá certo.
Responder

Gostei + 0

20/12/2018

Emerson Nascimento

tente assim:
	Excel := CreateOleObject('Excel.Application');
	Excel.Visible := True;

	Excel.Workbooks.Add;
	Excel.Workbooks[1].WorkSheets[1].Name := 'Aluno';

	Application.BringToFront;
 
	Excel.WorkBooks[1].Sheets[1].Cells[ContaLinha, 1] := 'IdAluno';
	Excel.WorkBooks[1].Sheets[1].Cells[ContaLinha, 2] := 'Matricula';
 
	Excel.WorkBooks[1].Sheets[1].Cells[ContaLinha, 1] :=  '2514';
	Excel.WorkBooks[1].Sheets[1].Cells[ContaLinha, 2] := 'JOSE';

	Excel.Workbooks[1].Sheets.Add; // adiciona planilha

	Excel.WorkBooks[1].Sheets[2].Cells[ContaLinha, 1] := 'IdAluno Plan2';
	Excel.WorkBooks[1].Sheets[2].Cells[ContaLinha, 2] := 'Matricula Plan2';
 
	Excel.WorkBooks[1].Sheets[2].Cells[ContaLinha, 1] :=  '2514 plan2';
	Excel.WorkBooks[1].Sheets[2].Cells[ContaLinha, 2] := 'JOSE plan2';


Responder

Gostei + 0

21/12/2018

Leandro Carvalho

Bom dia.
Emerson....
Essa linha
Excel.Workbooks[1].Sheets.Add;

Funcionou, criou uma nova aba, mas as informações continuou incluindo a aba anterior.
Responder

Gostei + 0

21/12/2018

Leandro Carvalho

Alguma ideia?
Responder

Gostei + 0

21/12/2018

Emerson Nascimento

Na linha abaixo da adição na nova aba está demonstrado como manipular a nova aba.
Excel.WorkBooks[1].Sheets[ 2 ].Cells[1, 1] := 'IdAluno Plan2';

ou

Excel.WorkBooks[1].WorkSheets[ 2 ].Cells[1, 1] := 'IdAluno Plan2';

Note que agora estou apontando para a segunda planilha Sheets[2]
Responder

Gostei + 0

21/12/2018

Leandro Carvalho

Na linha abaixo da adição na nova aba está demonstrado como manipular a nova aba.
Excel.WorkBooks[1].Sheets[ 2 ].Cells[1, 1] := 'IdAluno Plan2';

ou

Excel.WorkBooks[1].WorkSheets[ 2 ].Cells[1, 1] := 'IdAluno Plan2';

Note que agora estou apontando para a segunda planilha Sheets[2]
Eu vi. Ele cria a planilha2 mas continua inserindo na primeira planilha
Responder

Gostei + 0

21/12/2018

Emerson Nascimento

Tente assim:
var
  Excel: variant;
  Plan: variant;
begin
  Excel := CreateOleObject('Excel.Application');
  Excel.Visible := True;

  Excel.Workbooks.Add;

  Application.BringToFront;

  Plan := Excel.WorkBooks[1].Sheets[1];
  Plan.Name := 'Aluno';
  Plan.Cells[1, 1] := 'IdAluno';
  Plan.Cells[1, 2] := 'Matricula';
  Plan.Cells[2, 1] :=  '2514';
  Plan.Cells[2, 2] := 'JOSE';

  Plan := Excel.Workbooks[1].Sheets.Add(null, Plan); // adiciona planilha no fim (fica ativa)
  Plan.Name := '2o. Aluno';
  Plan.Cells[1, 1] := '2o. IdAluno';
  Plan.Cells[1, 2] := '2o. Matricula';
  Plan.Cells[2, 1] := '2o. 2515';
  Plan.Cells[2, 2] := '2o. MARIA';

  Plan := Excel.Workbooks[1].Sheets.Add(null, Plan); // adiciona planilha no fim (fica ativa)
  Plan.Name := '3o. Aluno';
  Plan.Cells[1, 1] := '3o. IdAluno';
  Plan.Cells[1, 2] := '3o. Matricula';
  Plan.Cells[2, 1] := '3o. 2516';
  Plan.Cells[2, 2] := '3o. PEDRO';
end;

Responder

Gostei + 0

26/12/2018

Leandro Carvalho

E, pra voltar a preencher uma aba que já foi tratada, basta atribuir a variável novamente:
var
  Excel: variant;
  Plan: variant;
begin
  Excel := CreateOleObject('Excel.Application');
  Excel.Visible := True;

  Excel.Workbooks.Add;

  Application.BringToFront;

  Plan := Excel.WorkBooks[1].Sheets[1];
  Plan.Name := 'Aluno';
  Plan.Cells[1, 1] := 'IdAluno';
  Plan.Cells[1, 2] := 'Matricula';
  Plan.Cells[2, 1] := '2514';
  Plan.Cells[2, 2] := 'JOSE';

  Plan := Excel.Workbooks[1].Sheets.Add(null, Plan); // adiciona planilha no fim (fica ativa)
  Plan.Name := '2o. Aluno';
  Plan.Cells[1, 1] := '2o. IdAluno';
  Plan.Cells[1, 2] := '2o. Matricula';
  Plan.Cells[2, 1] := '2o. 2515';
  Plan.Cells[2, 2] := '2o. MARIA';

  Plan := Excel.Workbooks[1].Sheets.Add(null, Plan); // adiciona planilha no fim (fica ativa)
  Plan.Name := '3o. Aluno';
  Plan.Cells[1, 1] := '3o. IdAluno';
  Plan.Cells[1, 2] := '3o. Matricula';
  Plan.Cells[2, 1] := '3o. 2516';
  Plan.Cells[2, 2] := '3o. PEDRO';

  Plan := Excel.WorkBooks[1].Sheets[1]; // volto para a planilha 1
  Plan.Cells[3, 1] := '2517';
  Plan.Cells[3, 2] := 'ANTONIO';
  Plan.Cells[4, 1] := '2518';
  Plan.Cells[4, 2] := 'JOANA';

end;

Obrigado Emerson.
Deu certo.
Responder

Gostei + 0

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

Aceitar