Results 1 to 9 of 9

Thread: Automaticaly Run a VBA Macro

  1. #1
    Member
    Join Date
    2007-06
    Posts
    10
    Login to Give a bone
    0

    Default Automaticaly Run a VBA Macro

    Boa Tarde Estimados Colegas !!!!
    Queria uma Lisp para accionar um Macro VBA através da linha de comando..
    Consegui uma mas manda dizer-me que "não encontra o macro".
    Não percebo nada de Lisp.
    Peço ajuda a quem souber, se for possível.
    Antecipadamente agradeço.
    António Sobral
    Paço de Arcos
    sobral_1@sapo.pt

  2. #2
    Active Member
    Join Date
    2007-01
    Location
    Ermesinde - Portugal
    Posts
    59
    Login to Give a bone
    0

    Thumbs up Re: Automaticaly Run a VBA Macro

    Caro Sobral,

    para resolver esse caso tem 2 hipóteses:

    1. adicionar o caminho (Path) onde se encontra o ficheiro dvb (ficheiro da macro) à lista "Support File Search Path" que se encontra no quadro de "Options", no separador "Files" (logo o 1º do quadro).

    2. escrever o seu comando completo (incluindo o caminho) da seguinte forma:
    Vamos supor que
    a) o ficheiro está na pasta "c:\users\meuNome\VBA\"
    b) o ficheiro da macro em causa se chama "macro1.dvb"
    c) o nome do projecto é "Projecto1"
    d) o nome da rotina é "FazerQualquerCoisa" e está escrita no módulo "Thisdrawing"

    Você, nesta situação escreve o comando
    -vbarun c:/users/meunome/VBA/macro1.dvb!Projecto1.ThisDrawing.FazerQualquerCoisa

    repare que as barras separadoras estão ao contrário. Ao invés de esta C:\ está C:/

    Só não sei como incluir espaços no nome das pastas e até lanço o desafio aos especialistas em AutoLISP de como se faz isso. Como fazer se a pasta se chamar "C:\Rui Pestana\" (com espaço entre "Rui" e "Pestana".

    Espero que ajude, pois também não é a minha especialidade.

  3. #3
    Member
    Join Date
    2007-06
    Posts
    10
    Login to Give a bone
    0

    Default Re: Automaticaly Run a VBA Macro

    Oi Rui!!
    Sempre você a me cuidar hein! Obrigado!
    De facto se não é você não atinava com o sentido das barras...
    A lisp tem apenas 2 linhas e ficou assim como vai a seguir:

    ;Lisp de Arranque para Xmin_Xmax.dvb
    (defun cm ()
    (command "_-vbarun" "D:/Land Projects 3/VBA_Projectos/Xmin_Xmax.dvb!Module1.Xmin_Xmax")
    )
    Parece que os espaços em Land Projects 3 não faz diferença, isto é, estão tal qual consta no directório.
    Resumindo, basta colocar esta lisp na StatupSuit e chamá-la quando quizer com "pm" na linha de comando e ter colocado, claro, o respectivo macro dvb no caminho especificado.
    Descobri que o caminho se pode copiar da caixa Macros e depois invertendo as barras:
    Carrega-se o macro dvb (Load) no Macromanager. Depois clika-se o botão Macros e seleciona-se o referido macro dvb. Faz-se copy e Past para a rotina Lisp
    Acho que vou optar por colocar estas rotinas na mala da StartupSuit dando-lhe um nome sugestivo para lembrar o que fazem.
    Ok, mais uma vez agradeço a atenção e
    Cumprimentos
    a.sobral - Paço de Arcos - sobral_1@sapo.pt

  4. #4
    Member
    Join Date
    2007-06
    Posts
    29
    Login to Give a bone
    0

    Default Re: Automaticaly Run a VBA Macro

    poderia postar seu codigo vba aqui?

    tenho minhas reservas quanto programar para o cad em vba, talvez vendo a experiencia de outras pessoas isso mude...

    sabe, esse negocio de ter q escrever uma lisp para poder rodar uma macro em vba, me parece meio contraproducente...

  5. #5
    Active Member
    Join Date
    2007-01
    Location
    Ermesinde - Portugal
    Posts
    59
    Login to Give a bone
    0

    Default Re: Automaticaly Run a VBA Macro

    Caro Neyton,

    as reservas que poderá ter em programar em VBA são baseadas em desconhecimento da linguagem VB? Eu não programo em AutoLISP mas não por "não gostar" mas sim por ter descoberto o VBA e ter achado muito mais fácil do que o AutoLISP pois também fiz programas em AutoLISP. O VBA para AutoCAD só surgiu na versão 14. Até aí utilizava o AutoLISP. A questão de usar uma linguagem ou outra não se deve colocar em termos de gosto mas sim em termos de necessidade e da capacidade individual da sua aprendizagem.
    Pessoalmente, acho que quem trabalha em AutoLISP é de louvar pois é uma linguagem não muito fácil de aprender. Eu passei para o VB principalmente por causa das caixas de diálogo.

    Veja o que o Fernando P. Malard escreveu a propósito das linguagens de programação:
    http://forums.augi.com/showthread.ph...357#post729357

    De qualquer modo se me colocar uma questão/desafio de uma rotina que você tenha em AutoLISP terei todo o gosto em executá-la em VBA, não por uma questão de evangelização da linguagem mas para lhe tirar o "desgosto" pelo VBA.

    Cumprimentos,

  6. #6
    Member
    Join Date
    2007-06
    Posts
    29
    Login to Give a bone
    0

    Default Re: Automaticaly Run a VBA Macro

    bom, nao vou vopiar/colar tudo aqui, uns tempos atras fiz uma rotina para "rotular" pontos q me foi bastante util num escritorio q trabalhei, é esta:

    http://tbn2.blogspot.com/2006/10/rtc3-reactors.html

    para rodar ela é necessario copiar todo o codigo dela mais os codigos das subrotinas que aparecem como links na pagina...

    ta, eu sei que é muito xarope isso, se preferir, copie apenas o rtc3, mais este arquivo:
    http://br.geocities.com/neyton/lsp2htm/lisps_dlls.zip
    so mude a ultima linha:
    (tbn:error-restore t)
    para
    (tbn:error-restore)
    sem o "t"

    deve ser bem interessante resolver um evento (reactor ) no vba, q eu nao achei como, hehehe

  7. #7
    Active Member
    Join Date
    2007-01
    Location
    Ermesinde - Portugal
    Posts
    59
    Login to Give a bone
    0

    Default Re: Automaticaly Run a VBA Macro

    Neyton,

    não sei se está interessado em saber mas, procure na "Developer Documentation" por "object level events".

    Quanto ao código AutoLISP do seu "blog" não sei executá-lo e é demasiado complexo para eu o entender. Se quiser simplificar tudo bem.
    Last edited by Rui Pestana; 2007-08-13 at 09:23 AM.

  8. #8
    100 Club
    Join Date
    2001-02
    Location
    Porto Portugal
    Posts
    128
    Login to Give a bone
    0

    Default Re: Automaticaly Run a VBA Macro

    Amigos

    Tanto programo em Autolisp como VBA, conforme o peso da vantagem em cada caso, nuns, o Autolisp é preferível, noutros o VBA é mais eficiente.
    Tenho vários utilitários generalistas em VBA e Autolisp que quero que estejam disponiveis para uso sempre que inicio o Autocad.
    No caso dos projectos em VBA (ficheiros dvb com os respectivos macros), encontrei a seguinte solução:
    Autovbaload.lsp
    neste ficheiro defino os comandos, por exemplo: ref, arma, pilar, acesórios.
    começo com a seguinte instrução que executa para a linha de comando quando inicio o Autocad:
    (princ "\nVBAMacros carregado... Funções VBA disponibilisadas")
    de seguida defino o comando, neste exemplo ref, pode utilizar o nome que quiser, será o que vai digitar na linha de comando do Autocad:
    (defun c:ref (/ proj1)
    (setq proj1 "c/lsp/vba/referencia.dvb") *1
    (vl-vbaload proj1) *2
    (vl_vbarun "arma") *3
    ) *4
    em que *1 cria a variável proj1 com o local e o nome do projecto, no seu caso terá que indicar o local e nome correspondente
    *2 função visuallisp que carrega o ficheiro
    *3 função visuallisp que corre a macro (nome entre aspas "arma")
    *4 parentesis final (defun)
    repita por cada projecto que possua, criando naturalmente as variáveis com nome diferente por exemplo: proj1, proj2, proj3, ....
    Carregue este ficheiro (Autovabload) no "Load Aplication" "Startup Suite"
    Sempre que iniciar o Autocad, não necessita de carregar todos os seus projectos, so aqueles cujos comandos defenidos neste ficheiro forem invocados executarão e ficarão carregados.
    Junto em anexo o meu Autovbaload.lsp para que possa editar e adaptar para seu uso
    Espero ter ajudado
    Attached Files Attached Files
    Last edited by Josue Silva; 2007-09-12 at 09:00 AM.

  9. #9
    100 Club
    Join Date
    2001-02
    Location
    Porto Portugal
    Posts
    128
    Login to Give a bone
    0

    Default Re: Automaticaly Run a VBA Macro

    Amigos
    Tenho que corrigir uma linha do código anterior, peço deculpa
    Onde se lê:
    (vl_vbarun "arma")
    Deve-se lêr:
    (vl-vbarun "arma")

Similar Threads

  1. CP222-2: Autodesk Revit VSTA: Writing Your First Macro An Introduction to the Macro Manager
    By Autodesk University in forum Customization and Programming
    Replies: 0
    Last Post: 2014-12-01, 02:12 AM
  2. Automaticaly
    By Ehsan in forum AutoCAD Customization
    Replies: 1
    Last Post: 2010-08-04, 06:29 AM
  3. How to load the menu automaticaly?
    By hasancad in forum AutoCAD CUI Menus
    Replies: 4
    Last Post: 2009-05-26, 06:23 PM
  4. Challenging Macro to reverse the function of an existing macro
    By parminderkeilah in forum VBA/COM Interop
    Replies: 1
    Last Post: 2008-05-19, 02:50 PM
  5. Automaticaly load the dvb file
    By jason907238 in forum VBA/COM Interop
    Replies: 2
    Last Post: 2005-02-09, 09:16 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •