Notifications
Clear all

Executar macro do access via VBA excel

8 Posts
1 Usuários
0 Reactions
6,634 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Estou tentando executar uma macro do access de dentro do meu VBA do excel, porém ele me retorna o seguinte erro:

O microsoft excel está aguardando que outro aplicativo conclua a ação OLE

E fica aparecendo toda hora essa msg.
Alguém saberia me dizer o que pode ser??

 
Postado : 03/07/2012 2:24 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Aparentemente, a rotina que vc pede para executar não retorna informação para o excel (somente no access), então o vb "fica" aguardando info de termino

 
Postado : 03/07/2012 6:28 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Isso mesmo é apenas uma macro que chama algumas consultas no access.

Como eu corrijo isso???, Pq ele fica dando essas msg porem nao executa a macro no access. Meio que da uma travada.

 
Postado : 03/07/2012 6:58 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Caio, como já vai muito tempo que não utilizo access, então não tenho bem certeza do que ocorre.
Pela sua explicação entendo que ao "mandar" executar a consulta do access (no access) o comando não é "assimilado"pelo access; portanto não o executa; e o excel.vba fica (com a conexão aberta) aguardando o encerramento dessa rotina.
Creio que deva estar conectando o aplicativo com ADO.
Então é melhor que "rode" as consultas diretamente do excel.

 
Postado : 04/07/2012 7:13 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Fiz algumas correções no cógigo agora ele está executando a consulta, porém tenho que ficar apertando OK toda vez que aparece a msg.?

Public Function RunMacro()
   ' On Error Resume Next
    Application.ScreenUpdating = False
    Set A = CreateObject("Access.Application")
    strDB = "Meubanco"
    A.OpenCurrentDataBase strDB
    A.Visible = False
    A.DoCmd.SetWarnings False
	A.DoCmd.OpenQuery "MinhaConsulta"
      A.DoCmd.SetWarnings True
    A.Quit
    
'    A.Close
    Set A = Nothing
    Application.ScreenUpdating = True
 
End Function
 
Postado : 04/07/2012 10:15 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Experimente assim (no teste que fiz não retorna nenhuma mensagem)

Public Function RunMacro()
       ' On Error Resume Next
    Dim secAutomation As MsoAutomationSecurity
    secAutomation = Application.AutomationSecurity

    Application.AutomationSecurity = msoAutomationSecurityLow
       
        
        'Application.ScreenUpdating = False
        Set A = CreateObject("Access.Application")
        strDB = "D:Meus Documentos - ReinaldoArquivos GrupoExcelMDBMod1Lic4.mdb"
        A.AutomationSecurity = msoAutomationSecurityLow
        A.OpenCurrentDataBase strDB
        'A.DoCmd.SetWarnings False
        A.Visible = tue
        A.DoCmd.OpenQuery "MinhaConsulta"
        'A.DoCmd.SetWarnings True
        A.Quit
       
       'A.Close
        Set A = Nothing
    Application.AutomationSecurity = secAutomation
        'Application.ScreenUpdating = True

    End Function
 
Postado : 04/07/2012 11:03 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Fiz um teste antes de ler seu post com Application.DisplayAlerts = False e funcionou tbm.

Sò estou com um problema, quando eu executo essa consulta uma vez funciona normalmente, porém quando tento executar de novo, ele fala que a operação deve usar uma consulta atualizável. Depois de penar muito descobrir que depois que executo uma vez, ele deixa a conexão aberta, ai o arquivo fica Já tentei finalizar o objetos de algumas formas .

 A.DoCmd.Close acFunction
 A.CloseCurrentDatabase
A.DoCmd.Quit

só que continua como somente leitura, ou seja, executa apenas uma vez o código

 
Postado : 04/07/2012 11:47 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Caio, não consegui reproduzir o mencionado. Que tipo de consulta é utilizada? Pode dispor um exemplo?

 
Postado : 05/07/2012 5:55 am