Notifications
Clear all

Excel trava quando utilizo macro

7 Posts
4 Usuários
0 Reactions
2,122 Visualizações
(@spartacus)
Posts: 2
New Member
Topic starter
 

Ola gostaria saber como eu faço para executar uma macro no excel e continuar a usar o excel para outras atividades, pois quando utilizo minha macro aqui o excel trava e não consigo abrir outras planilhas.

 
Postado : 09/10/2017 6:54 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Poste seu arquivo modelo!

Att

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

 
Postado : 09/10/2017 7:15 am
leandroxtr
(@leandroxtr)
Posts: 447
Reputable Member
 

Bom dia, spartacus!
Poste a planilha para ajudarmos melhor.
Provavelmente deve existir algum código que está impróprio para a sua demanda.

Aguardo..

Se te ajudou, não se esqueça de dar um like na resposta e marcar o tópico como finalizado.

Abraços!
Leandro Cordeiro

 
Postado : 09/10/2017 7:15 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

spartacus

Como você é novato e já infringiu uma regra do fórum com o título do teu tópico (já editei), para facilitar a tua participação, sugiro tomar conhecimento do conteúdo dos links abaixo:
viewtopic.php?f=7&t=16757
viewtopic.php?f=7&t=203
viewtopic.php?f=7&t=7903
viewtopic.php?f=7&t=3841
viewtopic.php?f=7&t=12600
viewtopic.php?f=7&t=3371

[]s
Patropi - Moderador

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

 
Postado : 09/10/2017 5:10 pm
(@spartacus)
Posts: 2
New Member
Topic starter
 

Bom dia essa é macro que utilizo aqui:

Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub validar_matricula()
Dim telefone As String
Dim dd As String
Dim i, j, x, Ultimalinha As Double

Set Sess0 = GetObject("C:UsersbjmDesktopTCSnet2.EDP")
Sess0.Visible = True

Ultimalinha = Range("A" & Rows.Count).End(xlUp).Row

For i = 2 To Ultimalinha

    For j = 1 To 4
        matricula = Plan1.Cells(i, 1).Value
        senha = Plan1.Cells(i, 2).Value
        
        
        Sess0.Screen.putstring matricula, 16, 35
        Sleep 2000
        Sess0.Screen.putstring senha, 17, 35
        Sleep 1000
        Sess0.Screen.SendKeys ("<enter>")
        
        Sleep 2000
    
    Next j

Plan1.Cells(i, 3).Value = "OK"
Next i

MsgBox "Processo Realizado com Sucesso!", 0 + vbInformation, "Fim do Processo"


End Sub
 
Postado : 11/10/2017 5:25 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

No seu caso, é necessário usar a API Sleep?
Qual versão você está usando 32, 64?

Experimente declarar como Public.

Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'Para Sistema de 64 Bit
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 'Para Sistema de 32 Bit

... Não sei se as dicas acima vai resolver...

Att

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

 
Postado : 11/10/2017 6:05 am
(@skulden)
Posts: 170
Estimable Member
 

/Você tem um for e um sleep no mesmo procedimento, isso não é um problema mas de fato você não vai ter resposta pois a aplicação vai estar rodando o loop e em cada loop você vai ter um sleep que faz a APLICAÇÃO inteira esperar alguns segundos.

Tem como amenizar 10% mas não tem como deixar 100%, o que você pode fazer é colocar um

 application.DoEvents 

depois do for para que você possa usar o Excel enquanto ele está no laço de repetição. PORÉM, mesmo com isso, você ainda vai ter o problema do sleep, pois ele faz a aplicação inteira esperar.

Pra deixar 100% você vai precisar trocar este Sleep e mudar a estrutura do código para usar o Application.OnTime, acredito eu.

Abraços.

Se a resposta lhe foi útil, clique no joinha!

 
Postado : 11/10/2017 6:21 am