Notifications
Clear all

Executar macro do access via VBA excel

8 Posts
1 Usuários
0 Reactions
6,647 Visualizações
Fernando Fernandes
(@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??

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/07/2012 2:24 pm
Fernando Fernandes
(@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

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/07/2012 6:28 pm
Fernando Fernandes
(@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.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/07/2012 6:58 pm
Fernando Fernandes
(@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.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/07/2012 7:13 am
Fernando Fernandes
(@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

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/07/2012 10:15 am
Fernando Fernandes
(@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

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 04/07/2012 11:03 am
Fernando Fernandes
(@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

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

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

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

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 05/07/2012 5:55 am