今天,我正在处理as400宏,并且我需要为3000多个记录逐个运行相同的宏。 excel工作表在A列中包含3000多个行,并且为数字格式。每次我需要运行宏之前,都需要使用excel A列中的值更改AS400宏代码。
下面是AS400宏的代码。
[PCOMM SCRIPT HEADER]
LANGUAGE=VBSCRIPT
DESCRIPTION=
[PCOMM SCRIPT SOURCE]
OPTION EXPLICIT
autECLSession.SetConnectionByName(ThisSessionName)
REM This line calls the macro subroutine
subSub1_
sub subSub1_()
autECLSession.autECLOIA.WaitForAppAvailable
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys "dc74945"
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys "[enter]"
autECLSession.autECLPS.WaitForAttrib 5,28,"00","3c",3,10000
autECLSession.autECLPS.WaitForCursor 5,29,10000
autECLSession.autECLOIA.WaitForAppAvailable
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys "7"
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys "[enter]"
autECLSession.autECLPS.WaitForAttrib 5,24,"00","3c",3,10000
autECLSession.autECLPS.WaitForCursor 5,25,10000
autECLSession.autECLOIA.WaitForAppAvailable
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys "n"
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys "nnn"
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys "[tab]"
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys "n"
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys "[enter]"
end sub
现在每次我需要通过从excel获取输入来更改下面的行。
autECLSession.autECLPS.SendKeys "dc74945"
Excel包含以下格式的数据:
ID Name
AC71182 Andrew Cain
AC74398 Adam Cadman
AD39903 Alisha Davies (CARDIFF)
AC74952 Abby Clarke
AD54561 Alison Duffield
AD59529 Ann Rose Davies
AD60488 Alex Delmonte C'Diff COMBO
我正在寻找的是一个AS400宏,它从excel的A列中逐个读取一个单元格(包含ID),然后通过更改上述行中的值来为该ID运行上面的宏。
我进行了很多搜索,但从未找到使用AS400 Macro来做的简单方法。我有VBA宏来执行此类操作,但我需要AS400宏。因此,如果可以的话,请寻求帮助。
谢谢,弥勒
您在IBM个人通讯中运行的这些AS400宏只是Visual Basic脚本,您可以在代码中实例化其他ActiveX对象,例如, Excel.Application。
这里是此类宏的简短示例。它会打开一个Excel工作表并遍历每一行,直到工作表的A列中没有值为止:
[PCOMM SCRIPT HEADER]
LANGUAGE=VBSCRIPT
[PCOMM SCRIPT SOURCE]
autECLSession.SetConnectionByName(ThisSessionName)
Dim excel
Dim row
Dim inputFilename
Dim objWorkbook
inputFilename = "C:\...\YourExcelFile.xls"
Set excel = CreateObject("Excel.Application")
Set objWorkbook = excel.Workbooks.Open(inputFilename)
excel.visible = true 'If you want to
row = 2 'Start at row 2 of your excel sheet
'Loop until AS400 has blocked input (error in most cases) or there are no values in column A of excel sheet left
while autECLSession.autECLOIA.InputInhibited = 0 AND excel.Cells(row,1).Value <> ""
'### YOUR MACRO STARTS HERE
autECLSession.autECLOIA.WaitForAppAvailable
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys excel.Cells(row,1).Value 'Value of column A / current row from excel sheet
autECLSession.autECLOIA.WaitForInputReady
autECLSession.autECLPS.SendKeys "[enter]"
autECLSession.autECLPS.WaitForAttrib 5,28,"00","3c",3,10000
autECLSession.autECLPS.WaitForCursor 5,29,10000
' ...
'### YOUR MACRO ENDS HERE
row = row + 1
wend
excel.Quit
Set excel = Nothing
最诚挚的问候