vb控制打印机自动打印表格.docx

上传人:b****8 文档编号:11015021 上传时间:2023-02-24 格式:DOCX 页数:12 大小:202.13KB
下载 相关 举报
vb控制打印机自动打印表格.docx_第1页
第1页 / 共12页
vb控制打印机自动打印表格.docx_第2页
第2页 / 共12页
vb控制打印机自动打印表格.docx_第3页
第3页 / 共12页
vb控制打印机自动打印表格.docx_第4页
第4页 / 共12页
vb控制打印机自动打印表格.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

vb控制打印机自动打印表格.docx

《vb控制打印机自动打印表格.docx》由会员分享,可在线阅读,更多相关《vb控制打印机自动打印表格.docx(12页珍藏版)》请在冰豆网上搜索。

vb控制打印机自动打印表格.docx

vb控制打印机自动打印表格

VB控制EXCLE自动打印表格

VB是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。

因此充分利用EXECL的强大报表功来实现报表功能。

但由于VB与EXCEL由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。

  一、VB读写EXCEL表:

  VB本身提自动化功能可以读写EXCEL表,其方法如下:

1、在工程中引用MicrosoftExcel类型库:

  从"工程"菜单中选择"引用"栏;选择MicrosoftExcel9.0ObjectLibrary(EXCEL2003),然后选择"确定"。

表示在工程中要引用EXCEL类型库。

  2、在通用对象的声明过程中定义EXCEL对象:

DimexcelAsObject

DimworkbookAsObject

DimsheetAsObject

  3、在程序中操作EXCEL表常用命令:

SetxlApp=CreateObject("Excel.Application")'创建EXCEL对象

SetxlBook=xlApp.Workbooks.Open("文件名")'打开已经存在的EXCEL工件簿文件

xlApp.Visible=True'设置EXCEL对象可见(或不可见)

SetxlSheet=xlBook.Worksheets("表名")'设置活动工作表

xlSheet.Cells(row,col)=值'给单元格(row,col)赋值

xlSheet.PrintOut'打印工作表

xlBook.Close(True)'关闭工作簿

xlApp.Quit'结束EXCEL对象

SetxlApp=Nothing'释放xlApp对象

xlBook.RunAutoMacros(xlAutoOpen)'运行EXCEL启动宏

xlBook.RunAutoMacros(xlAutoClose)'运行EXCEL关闭宏

  4、在运用以上VB命令操作EXCEL表时,除非设置EXCEL对象不可见,否则VB程序可继续执行其它操作,也能够关闭EXCEL,同时也可对EXCEL进行操作。

但在EXCEL操作过程中关闭EXCEL对象时,VB程序无法知道,如果此时使用EXCEL对象,则VB程序会产生自动化错误。

形成VB程序无法完全控制EXCEL的状况,使得VB与EXCEL脱节。

  二、EXCEL的宏功能:

  EXCEL提供一个VisualBasic编辑器,打开VisualBasic编辑器,其中有一工程属性窗口,点击右键菜单的"插入模块",则增加一个"模块1",在此模块中可以运用VisualBasic语言编写函数和过程并称之为宏。

其中,EXCEL有两个自动宏:

一个是启动宏(SubAuto_Open()),另一个是关闭宏(SubAuto_Close())。

它们的特性是:

当用EXCEL打含有启动宏的工簿时,就会自动运行启动宏,同理,当关闭含有关闭宏的工作簿时就会自动运行关闭宏。

但是通过VB的自动化功能来调用EXCEL工作表时,启动宏和关闭宏不会自动运行,而需要在VB中通过命令xlBook.RunAutoMacros(xlAutoOpen)和xlBook.RunAutoMacros(xlAutoClose)来运行启动宏和关闭宏。

  三、VB与EXCEL的相互勾通:

  充分利用EXCEL的启动宏和关闭宏,可以实现VB与EXCEL的相互勾通,其方法如下:

  在EXCEL的启动宏中加入一段程序,其功能是在磁盘中写入一个标志文件,同时在关闭宏中加入一段删除此标志文件的程序。

VB程序在执行时通过判断此标志文件存在与否来判断EXCEL是否打开,如果此标志文件存在,表明EXCEL对象正在运行,应该禁止其它程序的运行。

如果此标志文件不存在,表明EXCEL对象已被用户关闭,此时如果要使用EXCEL对象运行,必须重新创建EXCEL对象。

  四、VB控制EXCLE自动打印表格:

  1、在VB中,建立一个FORM2,界面如下:

其中要求输入的参数是原表格的纵列,即A列对应1、B列对应2、A列对应1、C列对应3、D列对应4、E列对应5,依此类推,打印时间是控制每打一张表所须时间,单位为毫秒(ms)。

当把值设为0时,对应单元格的内容不变,以便灵活应用,须把要打印的表放到C盘,放到别处须要改变程序。

然后在其中输入如下程序:

OptionExplicit

PublicuintAsInteger'单位名称

PublicgoodsAsInteger'设备名称

PublicnumberAsInteger'设备编号

PublicaddressAsInteger'出厂地址

PublicmodleAsInteger'设备型号

PublicreferenceAsInteger'参考

PublicresultAsInteger'检定结果

PublicdatesAsInteger'检定日期

PublicdeathAsInteger'检定日期

PubliccelAsInteger'打印张数

PublictimeAsInteger'打印时间

PrivateSubCommand1_Click()

Form2.Hide

Form1.Show

EndSub

PrivateSubCommand3_Click()

uint=Val(Text1.Text)'单位名称

goods=Val(Text2.Text)'设备名称

modle=Val(Text3.Text)'设备型号

address=Val(Text4.Text)'出厂地址

number=Val(Text5.Text)'设备编号

reference=Val(Text6.Text)'参考

result=Val(Text7.Text)'检定结果

dates=Val(Text8.Text)'检定日期

time=Val(Text9.Text)'打印时间

death=Val(Text10.Text)'有效期至

MsgBox"!

^-^参数修改成功^-^!

"

EndSub

PrivateSubForm_Initialize()'数据初始化

cel=1'打印张数

uint=1'单位名称

goods=2'设备名称

number=3'设备编号

address=4'出厂地址

modle=5'设备型号

reference=6'参考

result=7'检定结果

dates=8'检定日期

death=9'有效期至

time=2000'打印时间间隔

EndSub

PrivateSubCommand2_Click()

End

EndSub

建立一个FORM1,界面如下:

然后在其中输入如下程序:

DimexcelAsObject

DimworkbookAsObject

DimsheetAsObject

Dimpresent%

PrivateSubCommand1_Click()'打开EXCLE表格

IfDir("C:

\excel.bz")=""Then

Setexcel=CreateObject("excel.application")

Setworkbook=excel.Workbooks.Open("c:

\自动打印表格.xls")

Setsheet=workbook.WorkSheets

excel.Visible=True

workbook.Application.Run"auto_open"

excel.WorkSheets

(2).Activate'设置表2为活动表

IfForm2.uint<>0Thensheet

(2).Cells(1,2)=sheet

(1).Cells(Form2.cel,Form2.uint)'单位名称

IfForm2.goods<>0Thensheet

(2).Cells(2,2)=sheet

(1).Cells(Form2.cel,Form2.goods)'产品名称

IfForm2.number<>0Thensheet

(2).Cells(3,3)=sheet

(1).Cells(Form2.cel,Form2.number)'设备编号

IfForm2.address<>0Thensheet

(2).Cells(4,2)=sheet

(1).Cells(Form2.cel,Form2.address)'设备厂址

IfForm2.modle<>0Thensheet

(2).Cells(5,2)=sheet

(1).Cells(Form2.cel,Form2.modle)'设备型号

IfForm2.reference<>0Thensheet

(2).Cells(6,2)=sheet

(1).Cells(Form2.cel,Form2.reference)'分度号

IfForm2.result<>0Thensheet

(2).Cells(7,2)=sheet

(1).Cells(Form2.cel,Form2.result)'检定结果

IfForm2.dates<>0Thensheet

(2).Cells(11,2)=sheet

(1).Cells(Form2.cel,Form2.dates)'检定日期

IfForm2.death<>0Thensheet

(2).Cells(12,3)=sheet

(1).Cells(Form2.cel,Form2.death)'有效期至

Else

MsgBox"EXCL已打开!

"

EndIf

EndSub

PrivateSubCommand2_Click()'关闭退出表格

IfDir("C:

\excel.bz")<>""Then

workbook.Application.Run"auto_close"

Setexcel=Nothing

workbook.Close(True)

EndIf

Form1.Hide

Form2.Show

EndSub

PrivateSubCommand3_Click()'暂停打印

IfDir("C:

\excel.bz")=""Then

MsgBox"!

^-^请打开要打印的表格^-^!

"

Else

Timer1.Enabled=False

MsgBox"!

^-^打印暂停^-^!

"&Chr(10)&"!

^-^已打印"&Form2.cel-present-1&"张^-^!

"

EndIf

EndSub

PrivateSubCommand4_Click()'继续打印

IfDir("C:

\excel.bz")=""Then

MsgBox"!

^-^请打开要打印的表格^-^!

"

Else

Timer1.Interval=Form2.time

Timer1.Enabled=True

EndIf

EndSub

PrivateSubCommand5_Click()'开始打印

IfDir("C:

\excel.bz")=""Then

MsgBox"!

^-^请打开要打印的表格^-^!

"

Else

present=0

Form2.cel=1

Timer1.Interval=Form2.time

Timer1.Enabled=True

EndIf

EndSub

PrivateSubCommand6_Click()'下一张

IfDir("C:

\excel.bz")=""Then

MsgBox"!

^-^请打开要打印的表格^-^!

"

Else

present=present+1

IfForm2.uint<>0Thensheet

(2).Cells(1,2)=sheet

(1).Cells(present,Form2.uint)'单位名称

IfForm2.goods<>0Thensheet

(2).Cells(2,2)=sheet

(1).Cells(present,Form2.goods)'产品名称

IfForm2.number<>0Thensheet

(2).Cells(3,3)=sheet

(1).Cells(present,Form2.number)'设备编号

IfForm2.address<>0Thensheet

(2).Cells(4,2)=sheet

(1).Cells(present,Form2.address)'设备厂址

IfForm2.modle<>0Thensheet

(2).Cells(5,2)=sheet

(1).Cells(present,Form2.modle)'设备型号

IfForm2.reference<>0Thensheet

(2).Cells(6,2)=sheet

(1).Cells(present,Form2.reference)'分度号

IfForm2.result<>0Thensheet

(2).Cells(7,2)=sheet

(1).Cells(present,Form2.result)'检定结果

IfForm2.dates<>0Thensheet

(2).Cells(11,2)=sheet

(1).Cells(present,Form2.dates)'检定日期

IfForm2.death<>0Thensheet

(2).Cells(12,3)=sheet

(1).Cells(present,Form2.death)'有效期至

EndIf

EndSub

PrivateSubCommand7_Click()'上一张

IfDir("C:

\excel.bz")=""Then

MsgBox"!

^-^请打开要打印的表格^-^!

"

Else

present=present-1

Ifpresent<=0Thenpresent=1

IfForm2.uint<>0Thensheet

(2).Cells(1,2)=sheet

(1).Cells(present,Form2.uint)'单位名称

IfForm2.goods<>0Thensheet

(2).Cells(2,2)=sheet

(1).Cells(present,Form2.goods)'产品名称

IfForm2.number<>0Thensheet

(2).Cells(3,3)=sheet

(1).Cells(present,Form2.number)'设备编号

IfForm2.address<>0Thensheet

(2).Cells(4,2)=sheet

(1).Cells(present,Form2.address)'设备厂址

IfForm2.modle<>0Thensheet

(2).Cells(5,2)=sheet

(1).Cells(present,Form2.modle)'设备型号

IfForm2.reference<>0Thensheet

(2).Cells(6,2)=sheet

(1).Cells(present,Form2.reference)'分度号

IfForm2.result<>0Thensheet

(2).Cells(7,2)=sheet

(1).Cells(present,Form2.result)'检定结果

IfForm2.dates<>0Thensheet

(2).Cells(11,2)=sheet

(1).Cells(present,Form2.dates)'检定日期

IfForm2.death<>0Thensheet

(2).Cells(12,3)=sheet

(1).Cells(present,Form2.death)'有效期至

EndIf

EndSub

PrivateSubCommand8_Click()'从当钱页打印

IfDir("C:

\excel.bz")=""Then

MsgBox"!

^-^请打开要打印的表格^-^!

"

Else

Form2.cel=present

Timer1.Enabled=True

EndIf

EndSub

PrivateSubForm_Load()

present=0

Timer1.Interval=Form2.time

Timer1.Enabled=False

EndSub

PrivateSubTimer1_Timer()

Dima$

Timer1.Enabled=False

a=sheet

(1).Cells(Form2.cel,2)'如果单位名称为“”则打印结束

Ifa<>""Then

IfForm2.uint<>0Thensheet

(2).Cells(1,2)=sheet

(1).Cells(Form2.cel,Form2.uint)'单位名称

IfForm2.goods<>0Thensheet

(2).Cells(2,2)=sheet

(1).Cells(Form2.cel,Form2.goods)'产品名称

IfForm2.number<>0Thensheet

(2).Cells(3,3)=sheet

(1).Cells(Form2.cel,Form2.number)'设备编号

IfForm2.address<>0Thensheet

(2).Cells(4,2)=sheet

(1).Cells(Form2.cel,Form2.address)'设备厂址

IfForm2.modle<>0Thensheet

(2).Cells(5,2)=sheet

(1).Cells(Form2.cel,Form2.modle)'设备型号

IfForm2.reference<>0Thensheet

(2).Cells(6,2)=sheet

(1).Cells(Form2.cel,Form2.reference)'分度号

IfForm2.result<>0Thensheet

(2).Cells(7,2)=sheet

(1).Cells(Form2.cel,Form2.result)'检定结果

IfForm2.dates<>0Thensheet

(2).Cells(11,2)=sheet

(1).Cells(Form2.cel,Form2.dates)'检定日期

IfForm2.death<>0Thensheet

(2).Cells(12,3)=sheet

(1).Cells(Form2.cel,Form2.death)'有效期至

excel.ActiveSheet.PrintOut'打印输出

Form2.cel=Form2.cel+1

Timer1.Interval=Form2.time

Timer1.Enabled=True

Else

MsgBox"!

^-^表格已打完^-^!

"&Chr(10)&"!

^-^共打印"&Form2.cel-present-1&"张^-^!

"

EndIf

EndSub

4、运行VB程序,输入参数点击确定按钮可完成参数的修改,打印时间是控制每打一张表所须时间,打开EXCEL系统后,VB程序和EXCEL分别属两个不同的应用系统,均可同时进行操作,由于系统加了判断,因此在VB程序中重复点击EXCEL按钮时会提示EXCEL已打开。

如果在EXCEL中关闭EXCEL后再点EXCEL按钮,则会重新打开EXCEL。

而无论EXCEL打开与否,通过VB程序均可关闭EXCEL。

这样就实现了VB与EXCEL的无缝连接。

欢迎您的下载,资料仅供参考!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文化宗教

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1