今天,我正在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宏。因此,如果可以的话,请寻求帮助。
谢谢, 弥勒佛
答案 0 :(得分:0)
您在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
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
最诚挚的问候
答案 1 :(得分:0)
只要安装了IBM Personal Communications,就可以使用Excel VBA marco(而不是VBS marco)再次调用Excel应用程序来完成编码。
下面的链接是PCOMM库。您可以从第29页开始阅读。 https://www.ibm.com/support/knowledgecenter/SSEQ5Y_12.0.0/com.ibm.pcomm.doc/books/pdf/host_accessV120.pdf?view=kc
让我知道您是否仍然想要示例代码。