Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
#26938
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!
#26939
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.
#26940
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
#26941
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
#26953
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
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord