PROCEDURE PARA IMPORTAR DADOS DO EXCEL SEM USAR O STRINGGRID

19/04/2022

0

Olá, pessoal. Preciso de uma procedure que ao clicar no botão importar abre a pasta para selecionar o arquivo xls e logo em seguida importe para o delphi e insira os dados em edits e combobox. Eu fiz uma procedure só que apresenta um erro que diz "Não foi possível localizar o arquivo. Talvez ele tenha sido removido, excluído ou movido?". Já tentei várias coisas e não funciona. No código o problema sempre dá na linha de Excel.Application.

Segue o código:

procedure TfrmNomeDoSoftware.importarExcelClick(Sender: TObject);
// aquiiiiiiiiiiii
const
xlCellTypeLastCell = $0000000B;
var
XLSAplicacao, AbaXLS: OLEVariant;
RangeMatrix: Variant;
linhas, colunas, k, r: Integer;
xFileXLS: string;
Result : Boolean;
begin
linhas := 0;
colunas := 0;
Result := False;
// Cria Excel- OLE Object
XLSAplicacao := CreateOleObject(''Excel.Application'');
try
// Esconde Excel
XLSAplicacao.Visible := False;
// Abre o Workbook
XLSAplicacao.Workbooks.Open(xFileXLS);

{ Selecione aqui a aba que você deseja abrir primeiro - 1,2,3,4.... }
XLSAplicacao.WorkSheets[1].Activate;
{ Selecione aqui a aba que você deseja ativar - começando sempre no 1 (1,2,3,4) }
AbaXLS := XLSAplicacao.Workbooks[ExtractFileName(xFileXLS)].WorkSheets[1];

AbaXLS.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;

// Pegar o número da última linha
linhas := XLSAplicacao.ActiveCell.Row;
// Pegar o número da última coluna
colunas := XLSAplicacao.ActiveCell.Column;
// Associaca a variant WorkSheet com a variant do Delphi
RangeMatrix := XLSAplicacao.Range[''A1'', XLSAplicacao.Cells.item[linhas,
colunas]].Value;

finally ;
{edtCRazaoSocialEmpresa.Text := RangeMatrix[2 ,1];
edtQtIntervalo.Text := RangeMatrix[2, 2];
edtTempoIntervalo.Text := RangeMatrix[3, 2];
edtTDispTurno.Text := RangeMatrix[4, 2];
edtTempoTotalTurno.Text := RangeMatrix[5, 2];}
end;
begin
RangeMatrix := Unassigned;
// Fecha o Microsoft Excel
if not VarIsEmpty(XLSAplicacao) then
begin
XLSAplicacao.Quit;
XLSAplicacao := Unassigned;
AbaXLS := Unassigned;
Result := true;
end;
end;
Felipe Fagundes

Felipe Fagundes

Responder

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

Aceitar