如何从EXCEL中获取输入并使用该值在AS400中运行宏 [英] How to take input from excel and use that value to run a macro in as400

查看:0
本文介绍了如何从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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆