还剩13页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
VB控制EXCLE自动打印表格VB是常用的应用软件__工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便因此充分利用EXECL的强大报表功来实现报表功能但由于VB与EX__L由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题
一、VB读写EX__L表 VB本身提自动化功能可以读写EX__L表,其方法如下
1、在工程中引用MicrosoftEx__l类型库 从工程菜单中选择引用栏;选择MicrosoftEx__l
9.0O__ectLibrary(EX__L2003),然后选择确定表示在工程中要引用EX__L类型库
2、在通用对象的声明过程中定义EX__L对象Dimex__lAsO__ectDimworkbookAsO__ectDimsheetAsO__ect
3、在程序中操作EX__L表常用命令SetxlApp=CreateO__ectEx__l.Application创建EX__L对象SetxlBook=xlApp.Workbooks.Open文件名打开已经存在的EX__L工件簿文件xlApp.Visible=True设置EX__L对象可见(或不可见)SetxlSheet=xlBook.Worksheets表名设置活动工作表xlSheet.__llsrowcol=值给单元格(rowcol)赋值xlSheet.PrintOut打印工作表xlBook.CloseTrue关闭工作簿xlApp.Quit结束EX__L对象SetxlApp=Nothing释放xlApp对象xlBook.RunAuto__crosxlAutoOpen运行EX__L启动宏xlBook.RunAuto__crosxlAutoClose运行EX__L关闭宏
4、在运用以上VB命令操作EX__L表时,除非设置EX__L对象不可见,否则VB程序可继续执行其它操作,也能够关闭EX__L,同时也可对EX__L进行操作但在EX__L操作过程中关闭EX__L对象时,VB程序无法知道,如果此时使用EX__L对象,则VB程序会产生自动化错误形成VB程序无法完全控制EX__L的状况,使得VB与EX__L脱节
二、EX__L的宏功能 EX__L提供一个VisualBasic编辑器,打开VisualBasic编辑器,其中有一工程属性窗口,__右键菜单的插入模块,则增加一个模块1,在此模块中可以运用VisualBasic语言编写函数和过程并称之为宏其中,EX__L有两个自动宏一个是启动宏(SubAuto_Open),另一个是关闭宏(SubAuto_Close)它们的特性是当用EX__L打含有启动宏的工簿时,就会自动运行启动宏,同理,当关闭含有关闭宏的工作簿时就会自动运行关闭宏但是通过VB的自动化功能来调用EX__L工作表时,启动宏和关闭宏不会自动运行,而需要在VB中通过命令xlBook.RunAuto__crosxlAutoOpen和xlBook.RunAuto__crosxlAutoClose来运行启动宏和关闭宏
三、VB与EX__L的相互勾通 充分利用EX__L的启动宏和关闭宏,可以实现VB与EX__L的相互勾通,其方法如下 在EX__L的启动宏中加入一段程序,其功能是在磁盘中写入一个标志文件,同时在关闭宏中加入一段删除此标志文件的程序VB程序在执行时通过判断此标志文件存在与否来判断EX__L是否打开,如果此标志文件存在,表明EX__L对象正在运行,应该禁止其它程序的运行如果此标志文件不存在,表明EX__L对象已被用户关闭,此时如果要使用EX__L对象运行,必须重新创建EX__L对象
四、VB控制EXCLE自动打印表格
1、在VB中,建立一个FORM2,界面如下其中要求输入的参数是原表格的纵列,即A列对应
1、B列对应
2、A列对应
1、C列对应
3、D列对应
4、E列对应5,依此类推,打印时间是控制每打一张表所须时间,单位为毫秒(ms)当把值设为0时,对应单元格的内容不变,以便灵活应用,须把要打印的表放到C盘,放到别处须要改变程序然后在其中输入如下程序OptionExplicitPublicuintAsInteger单位名称PublicgoodsAsInteger设备名称PublicnumberAsInteger设备编号PublicaddressAsInteger出厂地址PublicmodleAsInteger设备型号Publicreferen__AsInteger参考PublicresultAsInteger检定结果PublicdatesAsInteger检定日期PublicdeathAsInteger检定日期Public__lAsInteger打印张数PublictimeAsInteger打印时间PrivateSubCom__nd1_ClickForm
2.HideForm
1.ShowEndSubPrivateSubCom__nd3_Clickuint=ValText
1.Text单位名称goods=ValText
2.Text设备名称modle=ValText
3.Text设备型号address=ValText
4.Text出厂地址number=ValText
5.Text设备编号referen__=ValText
6.Text参考result=ValText
7.Text检定结果dates=ValText
8.Text检定日期time=ValText
9.Text打印时间death=ValText
10.Text有效期至MsgBox!^-^参数修改成功^-^!EndSubPrivateSubForm_Initialize数据初始化__l=1打印张数uint=1单位名称goods=2设备名称number=3设备编号address=4出厂地址modle=5设备型号referen__=6参考result=7检定结果dates=8检定日期death=9有效期至time=2000打印时间间隔EndSubPrivateSubCom__nd2_ClickEndEndSub建立一个FORM1,界面如下然后在其中输入如下程序Dimex__lAsO__ectDimworkbookAsO__ectDimsheetAsO__ectDimpresent%PrivateSubCom__nd1_Click打开EXCLE表格IfDirC:\ex__l.bz=ThenSetex__l=CreateO__ectex__l.applicationSetworkbook=ex__l.Workbooks.Openc:\自动打印表格.xlsSetsheet=workbook.WorkSheetsex__l.Visible=Trueworkbook.Application.Runauto_openex__l.WorkSheets
2.Activate设置表2为活动表IfForm
2.uint0Thensheet
2.__lls12=sheet
1.__llsForm
2.__lForm
2.uint单位名称IfForm
2.goods0Thensheet
2.__lls22=sheet
1.__llsForm
2.__lForm
2.goods产品名称IfForm
2.number0Thensheet
2.__lls33=sheet
1.__llsForm
2.__lForm
2.number设备编号IfForm
2.address0Thensheet
2.__lls42=sheet
1.__llsForm
2.__lForm
2.address设备厂址IfForm
2.modle0Thensheet
2.__lls52=sheet
1.__llsForm
2.__lForm
2.modle设备型号IfForm
2.referen__0Thensheet
2.__lls62=sheet
1.__llsForm
2.__lForm
2.referen__分度号IfForm
2.result0Thensheet
2.__lls72=sheet
1.__llsForm
2.__lForm
2.result检定结果IfForm
2.dates0Thensheet
2.__lls112=sheet
1.__llsForm
2.__lForm
2.dates检定日期IfForm
2.death0Thensheet
2.__lls123=sheet
1.__llsForm
2.__lForm
2.death有效期至ElseMsgBoxEXCL已打开!EndIfEndSubPrivateSubCom__nd2_Click关闭退出表格IfDirC:\ex__l.bzThenworkbook.Application.Runauto_closeSetex__l=Nothingworkbook.CloseTrueEndIfForm
1.HideForm
2.ShowEndSubPrivateSubCom__nd3_Click暂停打印IfDirC:\ex__l.bz=ThenMsgBox!^-^请打开要打印的表格^-^!ElseTimer
1.Enabled=FalseMsgBox!^-^打印暂停^-^!Chr10!^-^已打印Form
2.__l-present-1张^-^!EndIfEndSubPrivateSubCom__nd4_Click继续打印IfDirC:\ex__l.bz=ThenMsgBox!^-^请打开要打印的表格^-^!ElseTimer
1.Interval=Form
2.timeTimer
1.Enabled=TrueEndIfEndSubPrivateSubCom__nd5_Click开始打印IfDirC:\ex__l.bz=ThenMsgBox!^-^请打开要打印的表格^-^!Elsepresent=0Form
2.__l=1Timer
1.Interval=Form
2.timeTimer
1.Enabled=TrueEndIfEndSubPrivateSubCom__nd6_Click下一张IfDirC:\ex__l.bz=ThenMsgBox!^-^请打开要打印的表格^-^!Elsepresent=present+1IfForm
2.uint0Thensheet
2.__lls12=sheet
1.__llspresentForm
2.uint单位名称IfForm
2.goods0Thensheet
2.__lls22=sheet
1.__llspresentForm
2.goods产品名称IfForm
2.number0Thensheet
2.__lls33=sheet
1.__llspresentForm
2.number设备编号IfForm
2.address0Thensheet
2.__lls42=sheet
1.__llspresentForm
2.address设备厂址IfForm
2.modle0Thensheet
2.__lls52=sheet
1.__llspresentForm
2.modle设备型号IfForm
2.referen__0Thensheet
2.__lls62=sheet
1.__llspresentForm
2.referen__分度号IfForm
2.result0Thensheet
2.__lls72=sheet
1.__llspresentForm
2.result检定结果IfForm
2.dates0Thensheet
2.__lls112=sheet
1.__llspresentForm
2.dates检定日期IfForm
2.death0Thensheet
2.__lls123=sheet
1.__llspresentForm
2.death有效期至EndIfEndSubPrivateSubCom__nd7_Click上一张IfDirC:\ex__l.bz=ThenMsgBox!^-^请打开要打印的表格^-^!Elsepresent=present-1Ifpresent=0Thenpresent=1IfForm
2.uint0Thensheet
2.__lls12=sheet
1.__llspresentForm
2.uint单位名称IfForm
2.goods0Thensheet
2.__lls22=sheet
1.__llspresentForm
2.goods产品名称IfForm
2.number0Thensheet
2.__lls33=sheet
1.__llspresentForm
2.number设备编号IfForm
2.address0Thensheet
2.__lls42=sheet
1.__llspresentForm
2.address设备厂址IfForm
2.modle0Thensheet
2.__lls52=sheet
1.__llspresentForm
2.modle设备型号IfForm
2.referen__0Thensheet
2.__lls62=sheet
1.__llspresentForm
2.referen__分度号IfForm
2.result0Thensheet
2.__lls72=sheet
1.__llspresentForm
2.result检定结果IfForm
2.dates0Thensheet
2.__lls112=sheet
1.__llspresentForm
2.dates检定日期IfForm
2.death0Thensheet
2.__lls123=sheet
1.__llspresentForm
2.death有效期至EndIfEndSubPrivateSubCom__nd8_Click从当钱页打印IfDirC:\ex__l.bz=ThenMsgBox!^-^请打开要打印的表格^-^!ElseForm
2.__l=presentTimer
1.Enabled=TrueEndIfEndSubPrivateSubForm_Loadpresent=0Timer
1.Interval=Form
2.timeTimer
1.Enabled=FalseEndSubPrivateSubTimer1_TimerDima$Timer
1.Enabled=Falsea=sheet
1.__llsForm
2.__l2如果单位名称为“”则打印结束IfaThenIfForm
2.uint0Thensheet
2.__lls12=sheet
1.__llsForm
2.__lForm
2.uint单位名称IfForm
2.goods0Thensheet
2.__lls22=sheet
1.__llsForm
2.__lForm
2.goods产品名称IfForm
2.number0Thensheet
2.__lls33=sheet
1.__llsForm
2.__lForm
2.number设备编号IfForm
2.address0Thensheet
2.__lls42=sheet
1.__llsForm
2.__lForm
2.address设备厂址IfForm
2.modle0Thensheet
2.__lls52=sheet
1.__llsForm
2.__lForm
2.modle设备型号IfForm
2.referen__0Thensheet
2.__lls62=sheet
1.__llsForm
2.__lForm
2.referen__分度号IfForm
2.result0Thensheet
2.__lls72=sheet
1.__llsForm
2.__lForm
2.result检定结果IfForm
2.dates0Thensheet
2.__lls112=sheet
1.__llsForm
2.__lForm
2.dates检定日期IfForm
2.death0Thensheet
2.__lls123=sheet
1.__llsForm
2.__lForm
2.death有效期至ex__l.ActiveSheet.PrintOut打印输出Form
2.__l=Form
2.__l+1Timer
1.Interval=Form
2.timeTimer
1.Enabled=TrueElseMsgBox!^-^表格已打完^-^!Chr10!^-^共打印Form
2.__l-present-1张^-^!EndIfEndSub
4、运行VB程序,输入参数__确定按钮可完成参数的修改,打印时间是控制每打一张表所须时间,打开EX__L系统后,VB程序和EX__L分别属两个不同的应用系统,均可同时进行操作,由于系统加了判断,因此在VB程序中重复__EX__L按钮时会提示EX__L已打开如果在EX__L中关闭EX__L后再点EX__L按钮,则会重新打开EX__L而无论EX__L打开与否,通过VB程序均可关闭EX__L这样就实现了VB与EX__L的无缝连接。