文/张喜瑞、毛立夏 利用Microsoft Office产品中的Word或Excel担当应用程序的数据输入、输出接口,可以实现复杂的输入界面和输出界面的设计。OLE可以使基于Windows的应用程序之间能够互相协作,实现系统集成,因此,我们就可以在VB中使用OLE来显示和控制其他应用程序的数据交换。
本文综合这些软件的特点,提出下列应用程序输入和输出功能模块的开发模式。其数 据流程框图如图所示。

设计模板文件
首先在Excel或Word中根据输入和输出界面的要求,设计好应用程序的输入界面和输出报表模板文件,文件中应包括框架、表格线的大小和单元格的样式,即设计好所有单元格的值和格式,并且活动数据项中只含格式而不含模板数据,最后存盘到适当位置。
对OLE对象的连接
下面以Excel作为控制对象实例,来说明在VB中通过OLE链接完成数据输入、输出的操作步骤:
1、 引用Microsoft Excel类型库(对于OLE自动化对象,该步骤可省略)。从[工程]菜单中选择[引用]菜单项。在可引用列表框中选择[Microsoft Excel8.0 Object Library]项。最后[确定]即可
2、 声明显示OLE对象数据类型及其变量:
方法1:声明作为一个普通OLE对象
public ExcelApp As object
方法2:声明作为一个Excel应用程序
public ExcelApp As Excel.Application
3、 创建OLE对象新实例或指定为特定的对象,获取Excel的控制句柄。我们通过三种方法来实现:
方法1:Set ExcelObj = CreateObject("Excel.Application")
方法2:Set ExcelObj = CreateObject("Excel.Application")
方法3:Set ExcelObj = GetObject(app.path+"\ template \ templ.xls")
4、 设置OLE对象的Visible属性,使其成为前台程序。
方法1: ExcelObj.Application.Visible = True
方法2: ExcelApp.Visible = True
应用OLE
打开前面在Excel中创建的模板文件templ.xls:
ExcelObj.Workbooks.Open (app.payh+"\ template \ templ.xls")。
如果是新建则采用ADD方法:
ExcelObj.Workbooks.ADD (app.path+"\"+DestinationFileName)
如果前面是通过GetObject函数引用一个特定的对象,则该步骤取消。
编写代码
1、完成数据的存取或格式控制
'把一个Access数据库表thePrintTable数据输出到ExcelObj对应单元格式中:
thePrintTable.MoveFirst
ExcelObj.Range ( "E3" ).Value = thePrintTable.Fields (0 )
ExcelObj.Range ( "F3" ).Value = ( thePrintTable.Fields (1 ) +thePrintTable.Fields (2 ) ) /4
'直接输出到单元格
ExcelObj.Range ("B2" ).Value = "VB输入输出界面开发模式"
ExcelObj.Range ( "E4" ).Value = 2000
'调整Excel行高的语句
ExcelObj.Rows ( "5" ).RowHeight = 40
有关其他功能和格式控制的命令可以借助Excel [工具]中的[宏]功能获得。
2、输出报表
存盘:ExcelObj.ActiveWorkbook.Save。
另存为:ExcelObj.ActiveWorkbook.SaveAs app.path+"\"+ destinationFileName。
打印预览:ExcelObj.ActiveWorkbook.PrintPreview。
打印:ExcelObj.ActiveWorkbook.print
3、交还Excel控制语句,释放对象
Set ExcelObj = Nothing 或 Set ExcelApp = Nothing
|