Notifications
Clear all

Copiar o NUM REG depois de cada LOOP.

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

Bom dia colegas,

Mais uma vez venho solicitar ajuda para resolver uma questão.
Pesquisei mas não conseguir achar nada a respeito.
Tenho esta planilha que copia os números de registros para um programa de base de dados da empresa.
Funciona da seguinte forma.
Inserimos os NUM REG no excel e depois e depois rodamos a macro que copia para o programa.
Eu gostaria de saber se teria como depois de cada LOOP copiar o NUM REG que foi copiado para o outro programa na coluna F da planilha ativa.

EX
Aperto botão para rodar a macro ela copia o NUM REG do excel célula A2 para o outro programa e depois que terminou antes de copiar o NUM REG da célula A3 copiar o NUM REG ja copiado para a coluna G e assim sucessivamente.

Antecipadamente agradeço.

Abraço a todos

Fabiosp

 
Postado : 04/02/2016 6:44 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não sei se entendi, mas experimente:
Acrescente a linha:
wrksheet.Cells(i + 2, "G") = NUMREG
logo após SOMANDOTUDO = wrksheet.Cells(1, 5).Value ou autECLSession.autECLPS.SendKeys "[ENTER]"

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

 
Postado : 04/02/2016 8:27 am
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

Reinaldo boa noite,

Muito obrigado pela ajuda.
Testei e era quase isso, pois somente copia o numero que esta na celula B2.
mas que preciso e que seja copiado todos os NUM REG que for inserido na coluna B para coluna G.
Tentei fazer algumas coisas mas não deu certo.

Abraços

Fabiosp

 
Postado : 04/02/2016 7:29 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Tente assim


Sub gravar()


Dim ulinha As Long

ulinha = Range("B1048576").End(xlUp).Row


Cells(ulinha, 6).Value = Cells(ulinha, 2).Value


End Sub



E so chamar o codigo qdo for conveniente no codigo principal

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 : 04/02/2016 7:39 pm
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

Reinaldo boa noite,

Desculpe a minha falha!
O seu código funcionou perfeitamente e que como não estou no trabalho fiz acesso remoto e a máquina eh lenta então acabei esquecendo de copiar o código corretamente.
Esqueci do mais importante incluir o (i) ..rs
Sem querer abusar de sua boa vontade, mas para finalizar gostaria de saber se teria como incluir na rotina um ferramenta para que caso ocorrer algum com algum NUM REG pular e ir para próxima NUM REG.
Tentei incluir uma instrução tipo OnError mas devido ao meu pouco conhecimento não deu certo.
Antecipadamente agradeço.

M prudencio boa noite.

Agradeço a sua colaboração e tentativa ajudar.
Abraços

Fabiosp

 
Postado : 04/02/2016 8:26 pm
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

Bom dia colegas,

Estava pesquisando na internet e percebi que a instrução on error não vai resolver meu problema (eu acho que não rs.) pois o que eu preciso e que na parte do código onde tem a instrução IF Then, caso a condição for verdadeira ela pula o NUM REG atual e vai para próximo NUM REG e faça todo processo descrito na rotina sucessivamente.
O problema e que eu não sei que comando devo incluir para que seja feito isso.
Caso alguém tenho uma ideia antecipadamente agradeço.

Abraços.

 
Postado : 08/02/2016 8:39 am
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

Boa tarde colegas.

Fazendo varias pesquisas na internet encontrei a solução para o meu problema.
Agradeço a todos colegas pelas dicas e ajuda de sempre.

Abraços.

 
Postado : 09/02/2016 10:31 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fabio

Se encontrou a solução, poste aqui no fórum
Outras pessoas podem ter a mesma dúvida, e serão trazidas para o fórum pelos sites de pesquisa, e irão se decepcionar quando encontrarem a tua resposta, sem nenhuma informação.

Use o bom censo.

[]s

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

 
Postado : 09/02/2016 12:10 pm
(@fabiosp)
Posts: 291
Reputable Member
Topic starter
 

Bom dia Patropi,

Você tem razão e sempre bom postar os resultados positivos no fórum para caso alguém estiver com o mesmo problema seja direcionados ao fórum.
Sempre posto os resultados antes de finalizar o tópico, desta vez não postei pois no feriado houve manutenção dos servidores da empresa não consegui acessar meu pc remotamente.

Desculpe.

Segue a solução para este tópico.

Sub NUM_USADOS()
Dim i
Dim SETOR
Dim NUMREG(100)
Dim SULFX(100)
Dim RESULTADO
Dim SOMANDOTUDO
Dim autECLConnMgr As Object
Dim autECLSession As Object
Set autECLConnMgr = CreateObject("PCOMM.autECLConnMgr")
ConnHandle = CreateConnection(autECLConnMgr)
If ConnHandle = 0 Then
Exitsub
End If
Set autECLSession = CreateObject
Set wrksheet = ActiveSheet

autECLSession.autECLPS.SendKeys "REGISTRAR", 21, 36
autECLSession.autECLPS.SendKeys "[ENTER]"
i = 0
Do
SETOR = wrksheet.Cells(2, 1).Value
NUMREG = wrksheet.Cells(i + 2, 2).Value
SULFX = wrksheet.Cells(i + 2, 3).Value
RESULTADO = wrksheet.Cells(2, 4).Value
SOMANDOTUDO = wrksheet.Cells(1, 5).Value

autECLSession.autECLPS.SendKeys SETOR, 44, 47
autECLSession.autECLPS.SendKeys NUMREG(i), 44, 49
autECLSession.autECLPS.SendKeys SULFX(i), 44, 50
autECLSession.autECLPS.SendKeys RESULTADO, 44, 52
autECLSession.autECLPS.SendKeys "[ENTER]"

If (autECLSession.autECLPS.SendKeys.GetText(22, 50, 3) <> wrksheet.Cells(2, 2).Value) Then ' Se o NUM REG for repetido volta para menu inicial do programa
autECLSession.autECLPS.SendKeys "[pf3]"
End If

wrksheet.Cells(i + 2, "G") = NUMREG ' copia o NUM REG para coluna G
autECLSession.autECLPS.SendKeys "[ENTER]"

i = i + 1
Loop Until i = SOMANDOTUDO
autECLSession.autECLPS.SendKeys "[pf3]"
End Sub
 
Postado : 11/02/2016 8:23 am