MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

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.

    Silvanio123
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 91
    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: Sab 03 Dez 2016, 04:37