PCOMM VBS脚本优化:自动填充日期+自动导航至目标页面
PCOMM VBScript 优化方案:自动日期填充与菜单导航
一、自动获取今日/明日日期并填充
你之前尝试Now或日期格式化方法没成功,大概率是没匹配主机系统要求的日期格式,或是缺少单数字月/日的补零处理。以下是可直接复用的实现代码:
基础版(无补零)
Dim todayDate, tomorrowDateObj, tomorrowDate ' 获取今日日期,格式为 MM/DD/YYYY(根据主机要求调整分隔符和顺序) todayDate = Month(Date) & "/" & Day(Date) & "/" & Year(Date) ' 计算并格式化明日日期 tomorrowDateObj = DateAdd("d", 1, Date) tomorrowDate = Month(tomorrowDateObj) & "/" & Day(tomorrowDateObj) & "/" & Year(tomorrowDateObj) ' 填充到对应字段(替换为你实际的坐标行、列) autECLSession.autECLOIA.WaitForInputReady autECLSession.autECLPS.SendKeys todayDate, 15, 30 ' 今日日期填充到第15行第30列 autECLSession.autECLPS.SendKeys tomorrowDate, 15, 45 ' 明日日期填充到第15行第45列
补零版(适配两位数月/日)
如果主机要求月、日必须为两位数(比如09/05/2024而非9/5/2024),用以下代码处理:
Dim todayMonth, todayDay, todayDate Dim tomorrowMonth, tomorrowDay, tomorrowDateObj, tomorrowDate ' 今日日期补零处理 todayMonth = Right("0" & Month(Date), 2) todayDay = Right("0" & Day(Date), 2) todayDate = todayMonth & "/" & todayDay & "/" & Year(Date) ' 明日日期补零处理 tomorrowDateObj = DateAdd("d", 1, Date) tomorrowMonth = Right("0" & Month(tomorrowDateObj), 2) tomorrowDay = Right("0" & Day(tomorrowDateObj), 2) tomorrowDate = tomorrowMonth & "/" & tomorrowDay & "/" & Year(tomorrowDateObj)
二、自动导航至目标输入页面
核心是模拟人工操作菜单的完整流程:回到主菜单→输入菜单代码→进入子菜单,关键是每一步操作后要等待主机就绪。
示例代码(根据你的实际菜单路径调整):
' 先确认会话连接状态 If Not autECLSession.Connected Then MsgBox "未连接到主机会话" WScript.Quit End If ' 1. 回到主菜单(如果当前不在主菜单,按对应功能键,比如F10) autECLSession.autECLOIA.WaitForInputReady autECLSession.autECLPS.SendKeys "{F10}" autECLSession.autECLOIA.WaitForInputReady ' 2. 输入主菜单代码,比如"MAIN",回车进入 autECLSession.autECLPS.SendKeys "MAIN" autECLSession.autECLPS.SendKeys "{ENTER}" autECLSession.autECLOIA.WaitForInputReady ' 3. 输入子菜单代码,比如"DATEENTRY",回车进入目标页面 autECLSession.autECLPS.SendKeys "DATEENTRY" autECLSession.autECLPS.SendKeys "{ENTER}" autECLSession.autECLOIA.WaitForInputReady ' 可选:验证是否成功进入目标页面(检查屏幕特定文本) Dim screenHeader screenHeader = autECLSession.autECLPS.GetText(1, 1, 30) ' 获取第一行前30个字符 If InStr(screenHeader, "DATE INPUT FORM") = 0 Then MsgBox "导航失败,请检查菜单代码或按键设置" WScript.Quit End If
注意事项
- 所有菜单代码、功能键、屏幕坐标都要替换成你实际环境的值;
- 每一步操作后必须调用
autECLOIA.WaitForInputReady,避免主机未就绪导致输入失效; - 如果导航过程中有弹窗或确认步骤,要额外添加对应的按键处理。
内容的提问来源于stack exchange,提问作者Jennifer Hamilton
相关产品推荐
相关产品推荐

