Notifications
Clear all

Digitar Texto em programa com Loop

5 Posts
3 Usuários
0 Reactions
1,976 Visualizações
(@kasumo)
Posts: 3
New Member
Topic starter
 

Boa noite,

Gostaria de uma luz, queria programar um projeto pra fazer a rotina abaixo.
Queria automatizar o lançamento de bonificações em sistema interno da empresa. A rotina de digitação por pedido é essa ai em baixo.
Por exemplo, os dados digitaria na planilha usando a sequencia de coluna abaixo.

Vendedor / Cliente / Forma Pgto / Dia Entrega / Mes Entrega / Produto 1 / Qtd 1 / Valor 1 / Produto 2 / Qtd 2 / Valor 2 / ... / Produto 999 / Qtd 999 / Valor 999

1 - Digitar Número do Mapa + enter
2 - Apertar Enter
3 - Apertar Enter
4 - Digitar Cod do Vendedor + enter
5 - Apertar Enter
6 - Digitar Cod do Cliente + enter
7 - Digitar Forma de Pgt + enter
8 - Apertar seta pra baixo
9 - Apertar ALT+S
10 - Digitar Dia de entrega
11 - Apertar Seta para direita
12 - Digitar Mês de entrega
13 - Apertar Enter 5x
14 - Digitar 2017
15 - Apertar enter
16 - Digitar Cód do Produto
17 - Apertar enter 2x
18 - Digitar Quantidade + enter
19 - Digitar preço + enter 4x
20 - Loop (Volta ao passo 14)
21 - Alt + G
22 - Alt + N
23 - Loop (Volta para o passo 1)

 
Postado : 29/11/2018 5:46 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Precisa saber o que digitar e onde.

Enfim uma planilha de exemplo ajuda bastante

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 : 29/11/2018 6:00 pm
(@kasumo)
Posts: 3
New Member
Topic starter
 

Opa,

A rotina como enviei é como digito atualmente, todas as bonificações.

Segue em anexo imagens da planilha base como penso que seria mais fácil de organizar, e tela do sistema onde digito.
Essa operação que passei no Quote é a ação totalmente via teclado. O loop que falei, é que se tiver dados nas colunas dos proximos pedidos, ele digita novamente, caso não, ele vai pro segundo loop, ver se tem outro cliente, se tiver ele faz de novo, se não tiver, eu vou por uma MsgBox avisando que já digitou todas as bonificações.

 
Postado : 29/11/2018 6:10 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

kasumo,

Boa noite!

Desculpe a minha ignorância mas... eu não entendi nada de nada desse texto que você colocou. Qual é o problema? Qual é a solução? O que você, de fato, quer?

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 29/11/2018 6:12 pm
(@kasumo)
Posts: 3
New Member
Topic starter
 

Eu tenho uma planilha com a macro abaixo. Ela verifica o mapa e digita os lotes dos produtos.
Porém, queria fazer uma planilha que fizesse a operação como descrevi. Tem um campo com o código onde digito o mapa que ela vai usar de base. Na planilha digito os códigos lá.
Na primeira linha o código do vendedor, código do cliente, da forma de pagamento, o dia de entrega e depois cada produto a bonificar. Se tiver não só as 3 primeiras colunas preenchidas, ele preenche também antes de salvar o pedido que é o comando ALT+G, por isso o loop entre as tarefas 14 e 20. Depois o loop passa pra a ultima linha, se tiver mais um outro cliente começa de novo um novo pedido.
Ai vão ser inseridos os dados de cada linha na ordem.
Queria uma luz pq não sei de onde começar pra fazer.
Dai, se poder me ajudar explicando como faço uma linha de comando pra digitar o dado de uma célula, já ia ser um bom ponto de partida pra montar uma planilha exemplo.

Option Explicit

Dim Qt, I, Inicio, Fim, Lote, Data

Private Type POINTAPI
    X As Long
    Y As Long
End Type
'----------

'**Win32 API Declarations MOUSEMOVE
Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

'----------
'Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, _
'    ByVal Y As Long) As Long
    
Private Declare Function ClientToScreen Lib "user32" (ByVal hWnd As Long, _
    lpPoint As POINTAPI) As Long
    
    ' Declara rotinas API necessárias:
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
                    ByVal lpWindowName As Long) As Long
                    
Sub MoveMouseCursor(ByVal X As Long, ByVal Y As Long, _
    Optional ByVal hWnd As Long)
    If hWnd <> 0 Then
        SetCursorPos X, Y
        MsgBox "Abra a Janela 'Formas de Pagto do Clientes"
    Else
        Dim lpPoint As POINTAPI
        lpPoint.X = X
        lpPoint.Y = Y
        'ClientToScreen hWnd, lpPoint
        ClientToScreen FindWindow("TFM_CadCli", 0), lpPoint
        SetCursorPos lpPoint.X, lpPoint.Y
    End If
End Sub

Sub Vai()
Dim Janela
Janela = FindWindow("TFM_CadCli", 0) 'Classe do Cadastro de Clientes
If Janela = 0 Then
MsgBox "Tela de Cadastro de Clientes não localizada."
Exit Sub
Else
AppActivate "Sic"
Call MoveMouseCursor(255, 150) 'Clicar em Seq. de entrega
End If
End Sub

Sub Localizar()
AppActivate "SIC"
Espera
Inicio = Range("B2")
Fim = Range("B3")
For I = Inicio To Fim
Lote = ActiveSheet.Range(Cells(I, 1), Cells(I, 1))
Data = ActiveSheet.Range(Cells(I, 2), Cells(I, 2))
Digitar
Next
Clicar
End Sub

Sub Digitar()
SendKeys Lote
SendKeys ("{ENTER}")
SendKeys Data
SendKeys ("{ENTER}")
SendKeys ("{ENTER}")
Call MoveMouseCursor(1114, 604)
Espera
End Sub

Sub Espera()
Dim newHour, newMinute, newSecond, waitTime
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 1
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
End Sub

Sub Clicar()
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4

mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0   ' Release left Click
End Sub

Sub SeqEntrega()
Vai
Clicar
End Sub
 
Postado : 29/11/2018 6:36 pm