使用Robot输入清单

发表于:2008-09-27来源:作者:点击数: 标签:robotRobot清单输入
制作一份模拟真实情况的预算文件通常需要输入大量的清单和子目,采用手工输入的话不仅浪费时间而且可重复性不强,本篇文章介绍如何使用 Robot 的DataPool和for循环对清单进行输入,并探索了两种方法的优缺点。 从事建筑行业的人都知道清单的输入格式,在这里
制作一份模拟真实情况的预算文件通常需要输入大量的清单和子目,采用手工输入的话不仅浪费时间而且可重复性不强,本篇文章介绍如何使用Robot的DataPool和for循环对清单进行输入,并探索了两种方法的优缺点。

    从事建筑行业的人都知道清单的输入格式,在这里我也简单介绍一下。 

    十二位的清单格式:

    两位专业号+两位章号+两位节号+三位小节号+三位流水号,如01 01 01 001 001(为了从视觉上看到不同位的意义,我把一个标准的清单用空格分隔开了,正常的清单号是没有空格分隔的)。不同专业、章、节、小节可以组合出不同的清单,最后一位流水号起到区分同一清单的作用,即为010101001001与010101001002是同一清单,只是用户流水号不同,因为一份预算书中不允许有完全相同的清单出现。

    作为自动化输入大量清单我首先想到的就是使用Robot的DataPool。从EXCEL制作大量清单并保存为CSV文件,导入到DataPool中进行循环输入。但这里我遇到一个问题:保存为CSV格式后清单号的第一个0被抹掉了(直接在CSV文档中输入010101001001,保存后第一个0还是会被清除),这样导入到DataPool后清单号都变成十一位了,这不是标准清单!解决办法就是手工在DataPool中添加,但对于大量保存在DataPol中的清单这样的修改是不可行的。于是只能放弃。

    另一种办法就是使用循环,将清单号如上面的格式拆分,分别对专业、章、节、小节、流水号进行循环,最后再组合成为一个标准的清单输入。但这里还有一个小问题,如我对三位小节号从1循环到10,最后怎样让其输出格式为001~010。其实很简单,使用format函数。简单代码如下:


Sub Main
    Dim Result As Integer
    Dim zhuan,zhang,jie,liu as integer
    Dim qing as string
   
    'Initially Recorded: 2006-11-15  21:35:34
    'scrīpt Name:     
        
    for jie = 1 to 5
        for liu = 1 to 5
      
         qing = "01" + "01" + "01" + Cstr(format(jie,"000")) + Cstr(format(liu,"000"))
         InputKeys qing
         InputKeys "{DOWN}"
   
        next liu
    next jie

End Sub

    这是一个再简单不过的循环语句,但是效果却很不错。由此可见我们不见得非要采用“高新技术”解决所有问题,最适用最简单的方法就是最好的。

原文转自:http://www.ltesting.net