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.
Carregar dados de uma planilha Excel
Moderador: Moderadores
Resposta
Boa Tarde
Vê se esse tópico te ajuda!
http://www.autolisp.com.br/autolisp/mod ... ight=excel
Atenciosamente
Cleyson Cloves do Carmo
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
“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
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.
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.
Resposta
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
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
“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
Resposta
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
[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
“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