Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcelo R Moura

Código do usuário Marcio.Theis

Recommended Posts

Amigos, primeiramente peço desculpas por citar o nome de um usuario no titulo do tópico..

 

Seguinte...

 

Achei um código para carregar dados de uma planilha excel para dentro do Delphi, feito pelo marcio.theis... segue o código

 

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 Object
XLApp:=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;

Só que para mim já dá erro logo nesta linha

 

XLApp:=CreateOleObject('Excel.Application');

o erro é

 

MensagemEnviada: 28 Jul 2009 20:44 Assunto: Responder com Citação Editar/Remover esta mensagem Excluir esta mensagem

Lego,

 

duas coisas:

 

deu erro logo na segunda linha

 

Código:

XLApp:=CreateOleObject('Excel.Application');

 

o erro: Sequencia de Classe Inválida,ProgId : "Excel.Application"

 

Alguém pode me dar um help?

 

Desde já grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Declare ComObj no Uses do seu formulário.

 

Abraços.

 

 

Amigos, primeiramente peço desculpas por citar o nome de um usuario no titulo do tópico..

 

Seguinte...

 

Achei um código para carregar dados de uma planilha excel para dentro do Delphi, feito pelo marcio.theis... segue o código

 

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 Object
XLApp:=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;

Só que para mim já dá erro logo nesta linha

 

XLApp:=CreateOleObject('Excel.Application');

o erro é

 

MensagemEnviada: 28 Jul 2009 20:44 Assunto: Responder com Citação Editar/Remover esta mensagem Excluir esta mensagem

Lego,

 

duas coisas:

 

deu erro logo na segunda linha

 

Código:

XLApp:=CreateOleObject('Excel.Application');

 

o erro: Sequencia de Classe Inválida,ProgId : "Excel.Application"

 

Alguém pode me dar um help?

 

Desde já grato

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, este código é para usar em Planilhas do Excel da Microsoft... na linha XLApp:=CreateOleObject('Excel.Application'); , você está dizendo para o seu compilador criar um objeto OLE que simule uma aplicação do Excel... logo, para que isso funcione, você obrigatoriamente tem que ter o Excel instalado na máquina onde está rodando a aplicação...

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Dia, eu tenho esse mesmo problema:

 

Cadeia de caracteres de classe inválida, ProgID: "Excel.Application"

 

 

, nesta mesma linha:

    try
      ExcApp  := GetActiveOleObject('Excel.Application');
    except
      try
        // If no instance of Word is running, try to Create a new Excel Object
        ExcApp := CreateOleObject('Excel.Application');
      except on E : Exception do
        begin
          XMsgError('Microsoft Excel não instalado/não encontrado.'+#13#10+
            e.Message);
          Exit;
        end
      end;
    end;

 

Não está funcionando em uma máquina que tem o Office Excel 2013 ( C:\Program Files\Microsoft Office 15\root\office15\excel.exe ) .

Nas outras versões funciona sem problemas ( 2000, 2003 e 2007 ).

Alguém tem alguma ideia do que possa ser?

 

Desde já agradeço,

Compartilhar este post


Link para o post
Compartilhar em outros sites

- Ao autor do tópico (Marcelo R Moura) foi respondido pelo Chrnos.

- rodrigod6 não tenho essa nova versão do excel instalado pra fazer teste, dei uma olhadinha e no próprio site da microsoft fala que é deste jeito, segue o link: http://msdn.microsoft.com/pt-pt/library/office/gg264813.aspx

Vou procurar mais sobre e posto aqui mais tarde.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A um bom tempo atrás, eu criei uma rotina que me permitia exportar dados do dbgrid para o excel, gerando planilhas quando necessário... a forma que criei está neste link: http://forum.imasters.com.br/topic/314555-resolvidoexportao-de-dados-para-excel/

 

 

Quanto ao problema enfrentado pelo rodrigod6, vendo o código que ele postou aqui não consegui encontrar onde é gerada a mensagem que ele relata... mas ai há alguns pontos a considerar que podem estar influenciando no problema: a primeira seria a versão do Delphi que está utilizando, que pode não dar suporte as versões mais recentes do excel (aqui é uma suposição)... outra questão poderia ser incompatibilidade entre versões do seu programa com o excel (por exemplo, você compilar em 64 bits e usar numa máquina de 32 bits ou o contrário)... há um post sobre isso neste link: http://answers.microsoft.com/en-us/office/forum/office_2010-customize/problem-with-com-objects-with-office-2010/b6003b67-2050-4683-a660-18f1156fe388

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.