valtino 0 Denunciar post Postado Março 23, 2010 Boa Noite Estou utilizando esta função e estou com erro na nesta linha: xlCellTypeLastCell = $0000000B; Alguém poderia me ajudar. Agradeço. Erro: Invalid variant operation Function XlsToStringGrid(AGrid: TStringGrid; AXLSFile: string): Boolean; const xlCellTypeLastCell = $0000000B; var XLApp, Sheet: OLEVariant; RangeMatrix: Variant; x, y, k, r: Integer; begin Result:=False; //Cria Excel- OLE ObjectXLApp:=CreateOleObject('Excel.Application'); try //Esconde Excel XLApp.Visible:=False; //Abre o Workbook XLApp.Workbooks.Open(AXLSFile); Sheet:=XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1]; Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate; //Pegar o número da última linha x:=XLApp.ActiveCell.Row; //Pegar o número da última coluna y:=XLApp.ActiveCell.Column; //Seta Stringgrid linha e coluna AGrid.RowCount:=x; AGrid.ColCount:=y; //Associaca a variant WorkSheet com a variant do Delphi RangeMatrix:=XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value; //Cria o loop para listar os registros no TStringGrid k:=1; repeat for r:=1 to y do AGrid.Cells[(r - 1),(k - 1)]:=RangeMatrix[K, R]; Inc(k,1); until k > x; RangeMatrix:=Unassigned; finally //Fecha o Excel if not VarIsEmpty(XLApp) then begin XLApp.Quit; XLAPP:=Unassigned; Sheet:=Unassigned; Result:=True; end; end; end; Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Março 23, 2010 Valdino, duas perguntas: qual versão do Delphi está usando para seus testes? O erro ocorre na compilação ou na execução? A segunda pergunta estou fazendo porque observei que no seu código você comentou a linha que cria o objeto OLE que vai manipular a planilha excel, neste linha: //Cria Excel- OLE ObjectXLApp:=CreateOleObject('Excel.Application'); Deveria ser: //Cria Excel- OLE Object XLApp:=CreateOleObject('Excel.Application'); Outra coisa... é uma pergunta meio besta, mas que já vi acontecer... na máquina onde ocorre o erro, existe o excel instalado? Se não existir, não vai funcionar mesmo. E uma dica: crie um tópico novo e referencie o já resolvido para facilitar aos colegas responderem suas dúvidas.... tópicos marcados como já resolvidos normalmente são ignorados pelo pessoal. []'s Compartilhar este post Link para o post Compartilhar em outros sites
valtino 0 Denunciar post Postado Março 23, 2010 Valdino, duas perguntas: qual versão do Delphi está usando para seus testes? O erro ocorre na compilação ou na execução? A segunda pergunta estou fazendo porque observei que no seu código você comentou a linha que cria o objeto OLE que vai manipular a planilha excel, neste linha: //Cria Excel- OLE ObjectXLApp:=CreateOleObject('Excel.Application'); Deveria ser: //Cria Excel- OLE Object XLApp:=CreateOleObject('Excel.Application'); Outra coisa... é uma pergunta meio besta, mas que já vi acontecer... na máquina onde ocorre o erro, existe o excel instalado? Se não existir, não vai funcionar mesmo. E uma dica: crie um tópico novo e referencie o já resolvido para facilitar aos colegas responderem suas dúvidas.... tópicos marcados como já resolvidos normalmente são ignorados pelo pessoal. []'s MEU AMIGO, FIZ AS ALTERAÇÕES E CONSEGUI IMPORTAR A PLANILHA. MUITO OBRIGADO. AGORA VOU PARA O SEGUNDO PASSO GRAVAR NO BANCO DE DADOS.MAIS OBRIGADO POR HORA...TCHAL.. Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Março 23, 2010 Tranquilo, estamos ai pra ajudar... []'s Ps.: o que aconteceu com o post que eu tinha feito aqui antes que está no quote do Valtino? o.Ô Compartilhar este post Link para o post Compartilhar em outros sites
Raficcha 1 Denunciar post Postado Março 23, 2010 Na verdade o Valtino colocou uma dúvida em um tópico que ja estava resolvido. E pelo que percebi, criaram os novos tópicos enquanto eu estava corrigindo o problema. Valtino, que bom que solucionou a sua dúvida. Só evite postar dúvidas em outros tópicos, principalmente se já estiverem resolvidos. Abraços. :D Compartilhar este post Link para o post Compartilhar em outros sites