Notifications
Clear all

Macro com procedimento muito grande.

9 Posts
4 Usuários
0 Reactions
1,739 Visualizações
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

Boa Tarde colegas,

Preciso de uma ajuda para resolver um problema.
Tenho essa planilha que copia informações de outro programa de base de dados para o excel.
Consegui fazer copiar as informações do programa de base de dados até a linha 458 da planilha excel, mais o total de informações que devem ser copiadas são de 864.
Na rotina quando é incluido o código para copiar até a linha 864 dá erro informando que o procedimento e muito grande.
Teria alguma forma de resolver isso?
O funcionamento é o seguinte, cada tela do programa de base de dados tem 24 linhas e 36 telas (24x36=864) as informações são copiadas na coluna A da planilha excel.
Acho que fica difícil testar pois para isso tem que rodar a macro junto com o programa de base de dados, mais suponho que seja possível arrumar a rotina.
Pesquisei na internet mais não consegui resolver..
Por gentileza alguém poderia me ajudar.
Antecipadamente agradeço.

Fabio sp.

 
Postado : 20/05/2016 10:02 am
(@mprudencio)
Posts: 2749
Famed Member
 

Como é a base de dados?
E como é o resultado esperado ?

Acho que vc precisa de um loop, pois vi varios ifs

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 20/05/2016 10:41 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Duvida: O que vem a ser Setor? Por que o Loop até i=Setor, se não é utilizado o valor de i, o que são as demais variaveis NunReg / Resultado?
Sem poder testar/entender corretamente pode experimentar algo do tipo

Sub REGISTRADOS()
Dim i
Dim SETOR
Dim NUMREG(100)
Dim SULFX(100)
Dim RESULTADO
Dim SOMANDOTUDO
Dim autECLConnMgr As Object
Dim autECLSession As Object
Dim ConnHandle As Long

Set autECLConnMgr = CreateObject("PCOMM.autECLConnMgr")
ConnHandle = CreateConnection(autECLConnMgr)
If ConnHandle = 0 Then
Exitsub
End If
Set autECLSession = CreateObject("PCOMM.autECLSession")
Set WrkSheet = ActiveSheet

autECLSession.autECLPS.SendKeys "REGISTRAR", 21, 36
autECLSession.autECLPS.SendKeys "[ENTER]"
i = 0
Do
SETOR = WrkSheet.Cells(2, 2).Value
REGISTROS = WrkSheet.Cells(i + 2, 1).Value

autECLSession.autECLPS.SendKeys SETOR, 44, 47
autECLSession.autECLPS.SendKeys REGISTROS(i), 44, 49
autECLSession.autECLPS.SendKeys "[ENTER]"
autECLSession.autECLOIA.WaitForInputReady
nlin = 3
    For x = 1 To 36
        For Zlin = 0 To 24
            WrkSheet.Cells(nlin + Zlin, "A").Value = RTrim(autECLSession.autECLPS.GetText(Zlin + 1, 2, 80))
            autECLSession.autECLOIA.WaitForInputReady
        Next
        If (autECLSession.autECLPS.SendKeys.GetText(22, 50, 3) = "Proximo") Then
            autECLSession.autECLOIA.WaitForInputReady
            autECLSession.autECLPS.SendKeys "[roll up]"
            autECLSession.autECLOIA.WaitForInputReady
            nlin = nlin + 24
        End If
    Next
If (autECLSession.autECLPS.SendKeys.GetText(22, 50, 3) = "Fim") Then
    autECLSession.autECLOIA.WaitForInputReady
    autECLSession.autECLPS.SendKeys "[pf12]"
End If
i = i + 1
Loop Until i = SETOR
autECLSession.autECLPS.SendKeys "[pf3]"
End Sub

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

 
Postado : 20/05/2016 11:34 am
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

Boa Noite MPrudencio.
Obrigado pela atenção.
A base de dados e um programa da IBM.
Resultado esperado e igual o que esta na coluna C.
A explicação detalhada escrevi no próprio arquivo.

Fabio sp

 
Postado : 20/05/2016 6:41 pm
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

Reinaldo boa noite.

Muito obrigado por sua atenção e desculpe a demora.
Testei o seu código mas não atendeu a necessidade do problema.
Agora que estou em casa eu reformulei a planilha para ficar mais fácil para entender.
A explicação escrevi no próprio arquivo.
Por gentileza poderia analizar para ver se da para entender?
Respondendo a sua pergunta, SETOR e a quantidade de nomes que precisa ser pesquisado na base de dados.
O resultado da pesquisa deve ser copiado para o excel na coluna C.
Na coluna D coloquei uns números de 1 a 24 que corresponde a cada pág do programa de base de dados.

Espero que consiga entender minha explicação.

Antecipadamente agradeço.

 
Postado : 20/05/2016 6:50 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Sinceridade não acrescentou muito a nova explanação. Assim, sem poder "ver/acompanhar" a execução/desenrolar da rotina, ficará muito difícil encontrar uma saída.
Você disse que minha proposta não atendeu, porem não disse o que ocorreu? Ainda creio que o caminho seja aquele, necessitando de ajustes.

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

 
Postado : 21/05/2016 7:04 am
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Boa noite, Fábio.

Uma pergunta: o código foi criado no Office 64bits? Pergunto isso pq. esse sintoma pode ocorrer quando se tenta executar códigos criados no Office 64bits em outro que tenha Office 32 bits.
Dá uma olhada nesse artigo da Knowledge Base da Microsoft: https://support.microsoft.com/pt-br/kb/983044

 
Postado : 21/05/2016 10:42 pm
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

Reinaldo boa noite.
Desculpe a demora.
Final de semana fazem manutenção nos sevidores da empresa e fica difícil acesso remoto.
Então, estava apenas copiando a primeira página.
Mas resolvi seguir seu conselho de mestre e comecei a mexer até que descobri o que deveria ser alterado.
Alterei For Zlin = 0 To 24 por For Zlin = 1 To 24
E depois RTrim(autECLSession.autECLPS.GetText(Zlin + 1, 2, 80)) por RTrim(autECLSession.autECLPS.GetText(Zlin + 2, 80)) e agora está funcionando perfeitamente.
Agradeço a sua ajuda sempre de grande valia.

Abraço

Fabiosp

Sinceridade não acrescentou muito a nova explanação. Assim, sem poder "ver/acompanhar" a execução/desenrolar da rotina, ficará muito difícil encontrar uma saída.
Você disse que minha proposta não atendeu, porem não disse o que ocorreu? Ainda creio que o caminho seja aquele, necessitando de ajustes.

 
Postado : 22/05/2016 6:53 pm
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

EdsonBR boa noite,

Antes de criar o tópico pesquisei na internet e vi esse link que você mandou mas não era esse o problema.
De toda forma obrigado.

Fabiosp

Boa noite, Fábio.

Uma pergunta: o código foi criado no Office 64bits? Pergunto isso pq. esse sintoma pode ocorrer quando se tenta executar códigos criados no Office 64bits em outro que tenha Office 32 bits.
Dá uma olhada nesse artigo da Knowledge Base da Microsoft: https://support.microsoft.com/pt-br/kb/983044

 
Postado : 22/05/2016 6:55 pm