如何从excel获取输入并使用该值在as400中运行宏

问题描述 投票:0回答:1

今天,我正在处理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宏。因此,如果可以的话,请寻求帮助。

谢谢,弥勒

excel ibm-midrange
1个回答
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 
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

最诚挚的问候

© www.soinside.com 2019 - 2024. All rights reserved.