excel - 使用 Do Loop VBA 选择 SAP 字段
问题描述
我正在研究一个宏以进入 SAP 并选择列中的单元格以提取到 Excel。现在,如果这是 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(找不到 ID)
有谁知道使这项工作的方法?
解决方案
是的,我实现了相同的脚本。您需要构造字符串,同时将 i 转换为字符串:
session.findById("wnd[0]/usr/lbl[12," & CStr(i) & "]").caretPosition = 6
CStr(i)
转换为字符串,同时将字符串&
连接在一起。
我只更改了一行,但你应该能够正确地做到这一点,因为你已经确定了你的问题,所以你对事情是如何工作的有一定的了解。祝你好运,
推荐阅读
- javascript - 如何在函数内的 React-Native Typescript 中动态创建和填充数组?
- javascript - 查询 $match 和 $project 重嵌套数据(MongoDB/聚合)
- c++ - 将两个整数相乘时完全不相关的结果?
- java - 使用管理 API 在重新平衡期间查询消费者组
- argo-workflows - Argo(events) 使用 Sensor 触发现有的 ClusterWorkflowTemplate
- amazon-web-services - 无法通过 AWS CLI 访问 s3 存储桶
- nginx - 如何限制 NGNIX RMTP 服务器的比特率
- postgresql - 用户数据未显示在 laravel 的 html 表上
- vue.js - 错误:开玩笑:转换必须导出“进程”函数。堆栈:TypeError:开玩笑:转换必须在 VUE 项目中导出“流程”函数
- css - 居中第一个标题,使第二个标题从第一个标题开始的地方开始