Tenha uma nova experiência ao navegar no Fórum pelo computador de forma integrada ao portal principal. Acesse o seguinte link: https://www.autolisp.com.br/board/. Entretanto para dispositivos móveis recomendamos acessar este outro link: https://www.autolisp.com.br/forum/

Carregar dados de uma planilha Excel

Dúvidas sobre VB para AutoCAD...

Moderador: Moderadores

Responder
Avatar do usuário
dansgo
Madeira
Madeira
Mensagens: 16
Registrado em: Seg 12 Jan 2004 11:00:00 pm

Carregar dados de uma planilha Excel

Mensagem por dansgo » Sex 28 Dez 2007 1:22:14 pm

Olá a todos.

A minha dúvida é a seguinte.
Tenho uma planilha do excel que leva dados para o autocad.
Gostaria que o programa solicitasse ao usuário a planilha, ou seja, ao carregar a lisp e executá-la, a primeira coisa seria solicitar onde o arquivo está.
Após isso, carregar os dados da planilha (o que já está pronto).
Essa chamada do arquivo precisa ser em activex e não consigo encontrar a função que faz isso.

Agradeço qq ajuda.

Avatar do usuário
unVolt
Bronze 1/3
Bronze 1/3
Mensagens: 185
Registrado em: Dom 17 Dez 2006 11:00:00 pm
Localização: Jundiaí - SP

Mensagem por unVolt » Sex 28 Dez 2007 2:35:48 pm

E pq precisa ser em ActiveX? O getfiled não serve?

Avatar do usuário
dansgo
Madeira
Madeira
Mensagens: 16
Registrado em: Seg 12 Jan 2004 11:00:00 pm

Mensagem por dansgo » Sex 28 Dez 2007 3:40:04 pm

Não, porque os dados vêm da planilha do excel.
Para pegar os dados de uma planilha do excel, somente acessando via activex, assim, ao selecionar a planilha, já entra na parte onde os dados são obtidos através de activex.

Obrigado.

Avatar do usuário
cleyson
Prata 1/3
Prata 1/3
Mensagens: 430
Registrado em: Seg 19 Jun 2006 12:00:00 am

Resposta

Mensagem por cleyson » Sex 28 Dez 2007 5:16:16 pm

Boa Tarde

Vê se esse tópico te ajuda!

http://www.autolisp.com.br/autolisp/mod ... ight=excel

Atenciosamente
Cleyson Cloves do Carmo
Cuiabá - Mato Grosso
“Na morte que me sigam, pois não deixo ninguém a chorar”. Cleyson
“Na vida as horas passam e tudo se renova, não invoque a morte, amanhã é um novo dia”. Cleyson
“Deus fez os caminhos, o homem faz o destino” Cleyson

Avatar do usuário
dansgo
Madeira
Madeira
Mensagens: 16
Registrado em: Seg 12 Jan 2004 11:00:00 pm

Mensagem por dansgo » Sex 28 Dez 2007 7:55:27 pm

Não é bem isso.

O problema está na obtenção do diretório em que o arquivo excel está.
Que função activex eu uso para capturar o diretório completo de um determinado arquivo?

(vl-load-com)
(setq acadapp (vlax-get-acad-object))
(setq acaddoc (vla-get-activedocument acadapp))
(setq mspace (vla-get-modelspace acaddoc))
(setq excel (vlax-get-or-create-object "Excel.Application"))
(setq w1 (vlax-get-property excel "workbooks"))
(setq w2 (vlax-invoke-method w1 "Open" "C:\\perfil.xls"))

Aqui está o problema.
Não quero colocar um diretório obrigatório.
A idéia é solicitar que o usuário escolha o arquivo.
O problema está no diretório desse arquivo.
O getfiled só traz o nome do arquivo, sem o diretório.
Para abrir o arquivo a ser lido, preciso colocar nesse open acima o diretório completo, senão não funciona.
Como obter o diretório completo?

Obrigado.

Avatar do usuário
cleyson
Prata 1/3
Prata 1/3
Mensagens: 430
Registrado em: Seg 19 Jun 2006 12:00:00 am

Resposta

Mensagem por cleyson » Sáb 29 Dez 2007 2:10:08 pm

Boa Tarde

Um jeito é assim ...

[lsp](defun c:teste(/ arq arq2 extraiExtensaoArquivo)
(SETQ arq (GETFILED "Selecione o arquivo TXT :" "" "TXT" 2))
(if arq
(progn
(setq extraiExtensaoArquivo (- (strlen arq) 4)); Ex: txt
(setq arq2 (vl-string-subst "log" "txt" arq extraiExtensaoArquivo)); Substitui txt por log
(alert (strcat "Diretorio e Nome Alterado: > "arq2))
(setq diretorioNomeArquivo (vl-string-subst "txt" "log" arq2 extraiExtensaoArquivo)); Volta para o Normal
(alert (strcat "Diretorio e Nome Normal > "diretorioNomeArquivo))
(princ "\nComando executado com Sucesso!")
);progn
(progn
(alert "Não foi selecionado nenhum arquivo!")
(princ "\nComando cancelado!")
(exit)
);progn
);if
(princ)
);defun
(princ "\nDigite <teste> para executar a rotina!")[/lsp]

Espero que dessa vez ajude!

Atenciosamente
Cleyson Cloves do Carmo
Cuiabá - Mato Grosso
“Na morte que me sigam, pois não deixo ninguém a chorar”. Cleyson
“Na vida as horas passam e tudo se renova, não invoque a morte, amanhã é um novo dia”. Cleyson
“Deus fez os caminhos, o homem faz o destino” Cleyson

Avatar do usuário
cleyson
Prata 1/3
Prata 1/3
Mensagens: 430
Registrado em: Seg 19 Jun 2006 12:00:00 am

Resposta

Mensagem por cleyson » Sáb 29 Dez 2007 2:37:36 pm

Pesquise também sob:


[lsp](vl-filename-directory "filename") ; Retorna sem o Nome do Arquico e Extensão
(vl-file-directory-p filename); Verifica se existe o Diretório
(vl-file-size "filename"); Tamanho do Arquivo
(vl-filename-extension "filename");retorna a extensão do Arquivo
(vl-file-systime "filename"); Retorna a última modificação do Arquivo
(vl-file-rename "old-filename" "new-filename"); Renomeia o Arquivo
(vl-filename-base "filename"); Retorna o Nome do Arquivo sem Extensão
(vl-file-delete "filename"); Deleta o Arquivo
(vl-directory-files [directory pattern directories]; Procura Arquivos num diretório[/lsp]

O neyton já fez algo bem interessante usando esses vlax ... se achar eu posto !

Atenciosamente
Cleyson Cloves do Carmo
Cuiabá - Mato Grosso
“Na morte que me sigam, pois não deixo ninguém a chorar”. Cleyson
“Na vida as horas passam e tudo se renova, não invoque a morte, amanhã é um novo dia”. Cleyson
“Deus fez os caminhos, o homem faz o destino” Cleyson

Avatar do usuário
dansgo
Madeira
Madeira
Mensagens: 16
Registrado em: Seg 12 Jan 2004 11:00:00 pm

Mensagem por dansgo » Sáb 29 Dez 2007 6:46:18 pm

Muitíssimo obrigado.

Responder