const
xlCellTypeLastCell = $0000000B;
var
Excel, Sheet: OLEVariant;
CantRow, CantCol, i, j, k, l : Integer;
RangoMatriz : Variant;
fileName, nro_carga, cadena, vde, vdeCod, MspAPP : String;
LastCell : Variant;
begin
openDialog1 := TOpenDialog.Create(self);
openDialog1.InitialDir := GetCurrentDir;
openDialog1.Options := [ofAllowMultiSelect];
OpenDialog1.Filter := '*.xlsx';
openDialog1.Filter := 'Archivos Excel 2013|*.xlsx|Archivos Excel 2007|*.xls';
proLimpiarGrid(sgDetalle);
if not openDialog1.Execute
then ShowMessage('La Operacion Se cancelo')
else
begin
l := 1;
for i := 0 to openDialog1.Files.Count-1 do
begin
Excel := CreateOleObject('Excel.Application');
fileName:= openDialog1.Files[i];
Excel.Workbooks.Open(FileName);
Sheet := Excel.Workbooks[ExtractFileName(FileName)].WorkSheets[1];
Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
CantRow := Excel.ActiveCell.Row;
CantCol := Excel.ActiveCell.Column;
RangoMatriz := Excel.Range['A1', Excel.Cells.Item[CantRow,CantCol]].Value;
nro_carga := RangoMatriz[8, 1];
with sgDetalle do
begin
for j:= 18 to CantRow-1 do
begin
Cells[0, l] := IntToStr(j-1);
cadena := RangoMatriz[j, 1];
vde := Trim(UpperCase(MidStr(cadena, pos('-', cadena)+1, Length(cadena))));
vdeCod := Trim(UpperCase(MidStr(cadena, 1, pos('-', cadena)-2)));
Cells[1, l] := vde;
Cells[2, l] := vdeCod;
cadena := RangoMatriz[j, 2];
vde := Trim(UpperCase(MidStr(cadena, pos('-', cadena)+1, Length(cadena))));
vdeCod := Trim(UpperCase(MidStr(cadena, 1, pos('-', cadena)-2)));
Cells[3, l] := vde;
Cells[4, l] := vdeCod;
cadena := nro_carga;
vde := Trim(UpperCase(MidStr(cadena, pos(':', cadena)+1, Length(cadena))));
Cells[5, l] := vde;
Cells[6, l] := RangoMatriz[j, 5] + '0' ;
Inc(l);
RowCount := RowCount + 1;
end;
end;
end;
end;
openDialog1.Free;
Excel.Quit
end;