如何从EXCEL中获取输入并使用该值在AS400中运行宏 [英] How to take input from excel and use that value to run a macro in as400
本文介绍了如何从EXCEL中获取输入并使用该值在AS400中运行宏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
今天我正在处理一个400个宏,我要求对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宏来做这样的事情,但我需要400宏。因此,请尽可能请求您的帮助。
谢谢, 弥勒
推荐答案
您在IBM Personal Communications中运行的这些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
致以最良好的问候
这篇关于如何从EXCEL中获取输入并使用该值在AS400中运行宏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文