Выбор полей SAP с помощью Do Loop VBA - PullRequest
0 голосов
/ 24 апреля 2018

Я работаю над макросом, чтобы перейти в SAP и выбрать ячейки в столбце для извлечения в Excel. Теперь, если бы это было превосходно, это не было бы проблемой, так как я бы просто использовал цикл do для перемещения по столбцу, копируя по пути. Я нахожусь в SAP GUI, который совместим с VBA, и это немного отличается. Я записал сценарий того, как я щелкаю вниз по столбцу, чтобы увидеть, как меняется код. Это то, что я получил.

session.findById("wnd[0]").maximize
session.findById("wnd[0]/usr/lbl[12,13]").setFocus
session.findById("wnd[0]/usr/lbl[12,13]").caretPosition = 6
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/lbl[12,14]").setFocus
session.findById("wnd[0]/usr/lbl[12,14]").caretPosition = 4
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/lbl[12,15]").setFocus
session.findById("wnd[0]/usr/lbl[12,15]").caretPosition = 5
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/lbl[12,16]").setFocus
session.findById("wnd[0]/usr/lbl[12,16]").caretPosition = 5
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/lbl[12,17]").setFocus
session.findById("wnd[0]/usr/lbl[12,17]").caretPosition = 5
session.findById("wnd[0]").sendVKey 0

Вы можете видеть, что конкретное значение увеличивается с 13 до 17, когда я перемещаюсь вниз по столбцу. Я подумал, что мог бы включить цикл do, чтобы затем перемещаться по столбцу и копировать значения. Вот мой соответствующий код

i = 13

Do

session.findById("wnd[0]").maximize
Current_Batch = session.findById("wnd[0]/usr/lbl[12,i]").Text
session.findById("wnd[0]/usr/lbl[12,i]").caretPosition = 6
session.findById("wnd[0]").sendVKey 0

If Current_Batch = "" Then
Exit Do
End If

Cells(i - 11, 4) = Current_Batch


i = i + 1

Loop

Это, однако, не работает, так как не распознает i как переменную. Это дает мне ошибку 619 (не удалось найти идентификатор)

Кто-нибудь знает способ заставить эту работу?

1 Ответ

0 голосов
/ 24 апреля 2018

Да, я реализовал такой же сценарий.Вам необходимо создать строку, одновременно преобразовав i в строку:

session.findById("wnd[0]/usr/lbl[12," & CStr(i) & "]").caretPosition = 6

CStr(i) преобразуется в строку, а & объединяет строки вместе.

Я изменил только одну строку, но вы должны быть в состоянии сделать это правильно, так как вы определили свою проблему, так что вы понимаете, как все работает.Удачи,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...