Página 1 de 1

Repetir a ação em todas as linhas preenchidas no Excel

Enviado: 02 Out 2017 às 16:22
por victor2
Mestres, boa tarde

Gostaria de ajuda na seguinte tarefa, por gentileza:

Repetisse essa mesma ação até a última célula preenchida no excel.

Início da operação.

session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").text = "/nmb21"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtRM07M-BWART").text = "261"
session.findById("wnd[0]/usr/ctxtRM07M-WERKS").text = "1104"
session.findById("wnd[0]/usr/ctxtRM07M-WERKS").setFocus
session.findById("wnd[0]/usr/ctxtRM07M-WERKS").caretPosition = 4
session.findById("wnd[0]").sendVKey 0


session.findById("wnd[0]/usr/subBLOCK:SAPLKACB:1002/ctxtCOBL-AUFNR").text =Range("c2").End(xlDown).Offset(0, 0).Select


session.findById("wnd[0]/usr/sub:SAPMM07R:0521/ctxtRESB-MATNR[0,7]").text = Range("d2").End(xlDown).Offset(0, 0).Select

session.findById("wnd[0]/usr/sub:SAPMM07R:0521/txtRESB-ERFMG[0,26]").text =
Range("e2").End(xlDown).Offset(0, 0).Select

session.findById("wnd[0]/usr/sub:SAPMM07R:0521/ctxtRESB-LGORT[0,53]").text =
Range("f2").End(xlDown).Offset(0, 0).Select

session.findById("wnd[0]/usr/sub:SAPMM07R:0521/ctxtRESB-LGORT[0,53]").setFocus
session.findById("wnd[0]/usr/sub:SAPMM07R:0521/ctxtRESB-LGORT[0,53]").caretPosition = 4
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/tbar[0]/btn[11]").press

Muito obrigado!

Repetir a ação em todas as linhas preenchidas no Excel

Enviado: 02 Out 2017 às 16:57
por victor2
As fórmulas como : Range("c2").End(xlDown).Offset(0, 0).Select foram inseridas com o intuito de ler cada célula da coluna "c" a partir da c2,e entretanto com esse comando ,só lê a última preenchida da "c" e as outras seguem o mesmo padrão... quero que ele leia desde a primeira ate a última.

Re: Repetir a ação em todas as linhas preenchidas no Excel

Enviado: 02 Out 2017 às 17:30
por alexandrevba
Boa tarde!!

Eu não sei se entendi, mas tente um Loop...
Código: Selecionar todos
SSub test()
Dim LR As Long, i As Long
With ActiveSheet
    LR = .Range("A" & Rows.Count).End(xlUp).Row
    For i = 1 To LR
        If .Range("A" & i).Value <> "" Then
            'Seu Código aqui
        End If
    Next i
End With
End Sub
Att

Repetir a ação em todas as linhas preenchidas no Excel

Enviado: 02 Out 2017 às 18:36
por victor2
SSub test()
Dim LR As Long, i As Long
With ActiveSheet
LR = .Range("A" & Rows.Count).End(xlUp).Row
For i = 1 To LR
If .Range("A" & i).Value <> "" Then
'Seu Código
End If
Next i
End With
End Sub

No caso, eu preciso aplicar seu exemplo em cada equação ?
No meu exemplo session.findById("wnd[0]/usr/sub:SAPMM07R:0521/ctxtRESB-MATNR[0,7]").text = Range("d2").End(xlDown).Offset(0, 0).Select , é uma linha linha de comando com um dado tirado de alguma celula do exel.

Dim LR As Long, i As Long
With ActiveSheet
LR = .Range("A" & Rows.Count).End(xlUp).Row
For i = 1 To LR
If .Range("A" & i).Value <> "" Then

session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "/nmb21"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtRM07M-BWART").Text = "261"
session.findById("wnd[0]/usr/ctxtRM07M-WERKS").Text = "1104"
session.findById("wnd[0]/usr/ctxtRM07M-WERKS").SetFocus
session.findById("wnd[0]/usr/ctxtRM07M-WERKS").caretPosition = 4
session.findById("wnd[0]").sendVKey 0


session.findById("wnd[0]/usr/subBLOCK:SAPLKACB:1002/ctxtCOBL-AUFNR").Text = Range("c2").End(xlDown).Offset(0, 0).Select


session.findById("wnd[0]/usr/sub:SAPMM07R:0521/ctxtRESB-MATNR[0,7]").Text = Range("d2").End(xlDown).Offset(0, 0).Select

session.findById("wnd[0]/usr/sub:SAPMM07R:0521/txtRESB-ERFMG[0,26]").text =
Range("e2").End(xlDown).Offset(0, 0).Select

session.findById("wnd[0]/usr/sub:SAPMM07R:0521/ctxtRESB-LGORT[0,53]").text =
Range("f2").End(xlDown).Offset(0, 0).Select

session.findById("wnd[0]/usr/sub:SAPMM07R:0521/ctxtRESB-LGORT[0,53]").SetFocus
session.findById("wnd[0]/usr/sub:SAPMM07R:0521/ctxtRESB-LGORT[0,53]").caretPosition = 4
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/tbar[0]/btn[11]").press

End If
Next i
End With

essa seria como ficaria montado. Mas como eu faço por ex: Range("e2").End(xlDown).Offset(0, 0).Select ler o dado na célula E2 e as debaixo,até a última preenchida.

Obrigado

Re: Repetir a ação em todas as linhas preenchidas no Excel

Enviado: 02 Out 2017 às 22:29
por babdallas
Cara, não manjo nada de código de SAP, mas vou tentar. Espero que ajude em alguma coisa.

Se entendi, você quer algo assim:
Código: Selecionar todos
Sub Teste

       Dim lngPriLin as Long, lngUltLin as Long    'Primeira linha e última linha preenchida
       Dim lngContador as long  'contador do loop que irá percorrer as células

       'Seta a primeira linha
       lngPriLin = 2

       'Encontra a última linha preenchida (Supondo que na coluna A tenha dados e que o codename da planilha é shtPlan1)
       lngUltLin = shtPlan1.cells(rows.count,1).end(xlup).row

       'Loop para percorrer da linha inicial até a última linha preenchida
        for lngContador = lngPriLin to lngUltLin
                If shtplan1.cells(lngContador,1).value <> vbNullstring then
                          seu código

                          'Exemplo da equação
                          session.findById("wnd[0]/usr/sub:SAPMM07R:0521/ctxtRESB-MATNR[0,7]").text = shtPlan1.cells(lngContador,5).value
                end if
       next lngContador

end Sub

Re: Repetir a ação em todas as linhas preenchidas no Excel

Enviado: 03 Out 2017 às 18:24
por victor2
Funcionou!

Fiz a alocação correta das funções e deu certo.

Muito obrigado pela ajuda!