MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Excecução de macro via vba

    Compartilhe

    lsdtampi
    Novato
    Novato

    Respeito às Regras 75%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 5
    Registrado : 23/03/2014

    Excecução de macro via vba

    Mensagem  lsdtampi em Qui 27 Mar 2014, 15:39

    Código:
    Public Function Macro()
        
        Dim xl As Object
        Dim hlp As Integer
        
        
            Set xl = CreateObject("Excel.Application")
            xl.Workbooks.Open ("L:\Publica\HYDE\MACRO CONCILIAÇÃO COM REMESSA 2.3.xlsm")
        
            xl.Visible = True
             hlp = InputBox("Qual Macro a que deseja rodar?" & Chr(13) & "1- BUSCAR_CONTRATO" & Chr(13) & "2-CONCILIAÇÃO" & Chr(13) & "3-VERIFICAR_AJUSTES")
        
             If hlp = 1 Then
              xl.Run "BUSCAR_CONTRATO"
             End If
        
             If hlp = 2 Then
               xl.Run "CONCILIACAO"
             End If
        
             If hlp = 3 Then
              xl.Run "VERIFICAR_AJUSTES"
             End If
      
            ActiveWorkbook.Close
             xl.Quit
          
            Set xl = Nothing

    Fiz esse código acima pra rodar macros no excel, só que se eu quiser rodar outra macro ele abre o arquivo denovo, resumindo se eu clicar 10x no botão no formulario rodar macro ele abre 10x o excel,
    tô apanhando pra fazer uma lógica em que ele rode as macros na mesma instância que eu rodei a primeira , e só depois eu salve.
    avatar
    Silvanio123
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 93
    Registrado : 24/08/2011

    Re: Excecução de macro via vba

    Mensagem  Silvanio123 em Sex 28 Mar 2014, 20:01

    Boa tarde lsdtampi,

    Quando vc pressiona o botão pede para criar um objeto "CreateObject", se você não quer repetir a criação, creio que deve criar a condição para que ele só abra caso já não estivesse aberto... Comece o raciocínio por ai.

    => Set xl = CreateObject("Excel.Application")

    Agora aconselho a usar "Select Case" no lugar de If's para as condições na abertura.

    ...
    If hlp = 1 Then
    xl.Run "BUSCAR_CONTRATO"
    End If
    ...

    Vlw.

      Data/hora atual: Dom 23 Jul 2017, 19:51