如何在VB窗体中直接操作EXCEL?

VB是应用软件常用的开发工具之一。由于VB有限的报表功能和报表格式的改变,程序不得不进行相应的修改,这给应用软件的维护带来了很大的不便。所以现在很多程序员都充分利用了EXECL强大的报表功能来实现报表功能。但是,由于VB和EXCEL属于不同的应用系统,如何将它们有机地结合起来,是一个值得我们研究的课题。

首先,VB读写EXCEL表格:

VB本身提供了读写EXCEL表格的自动化功能,其方法如下:

1,引用工程中的Microsoft Excel类型库:

从“项目”菜单中选择“参考”栏;选择Microsoft excel 9.0对象库(excel 2000),然后选择“确定”。指示将在项目中引用EXCEL类型库。

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

将xlApp调成Excel。应用

将xlBook调成Excel。练习本

将xlSheet调成Excel格式。工作表

3.在程序中操作EXCEL表格的常用命令:

Set xlapp = createobject ("EXCEL。应用程序")'创建一个Excel对象。

设置xlBook = xlApp。Workbooks.Open("文件名")'打开现有的EXCEL工作簿文件。

XlApp。Visible = True '将EXCEL对象设置为可见(或不可见)。

设置xlSheet = xlBook。Worksheets ("table name ")'设置活动工作表。

XlSheet。Cells(row,col) = value '为单元格(row,col)赋值。

XlSheet。“打印输出”打印工作表。

XlBook。Close (True)'关闭工作簿。

XlApp。“退出”结束EXCEL对象。

' Set xlApp = Nothing '释放xlApp对象。

Xlbook。runautomacro(xlautoopen)'运行EXCEL启动宏。

XL book . runautomacros(xlautoclose)'运行EXCEL以关闭宏。

4.使用上述VB命令操作EXCEL表格时,除非将EXCEL对象设置为不可见,否则VB程序可以继续执行其他操作,关闭EXCEL,同时操作EXCEL。但是,当EXCEL对象在EXCEL操作过程中被关闭时,VB程序无法知道。如果此时使用EXCEL对象,VB程序会产生自动化错误。VB程序不能完全控制EXCEL的情况,使得VB与EXCEL脱节。

二、EXCEL的宏功能:

EXCEL提供了一个Visual Basic编辑器。打开Visual Basic编辑器,它有一个工程属性窗口。在右键菜单中点击“插入模块”,增加一个“模块1”,模块中的函数和过程可以用Visual Basic语言编写,调用宏。其中,EXCEL有两个自动宏:一个是开始宏(Sub Auto_Open()),一个是关闭宏(Sub Auto_Close())。它们的特点是:使用EXCEL键入包含启动宏的工作簿时,会自动运行启动宏。同样,当关闭包含shutdown宏的工作簿时,它将自动运行shutdown宏。但是当通过VB的自动化功能调用EXCEL工作表时,启动宏和关机宏不会自动运行,而是需要通过命令xlbook来运行启动宏和关机宏。Runautomacros (xlautoopen)和xlbook。VB中的Runautomacros (xlautoclose)。

三、VB与EXCEL的通信:

充分利用EXCEL的启动宏和关闭宏实现VB与EXCEL的通信。这些方法如下:

在EXCEL的启动宏中添加一个程序,其作用是在磁盘中写入一个标志文件,同时在关机宏中添加一个删除这个标志文件的程序。VB程序在执行时通过判断这个标志文件是否存在来判断EXCEL是否打开。如果这个标志文件存在,说明EXCEL对象正在运行,应该禁止其他程序运行。如果这个标志文件不存在,说明EXCEL对象已经被用户关闭。此时,如果要使用EXCEL对象运行,必须重新创建EXCEL对象。

第四,例如:

1.在VB中,创建一个窗体,在上面放两个命令按钮,将Command1的Caption属性改为EXCEL,将Command2的Caption属性改为End。然后在其中输入以下程序:

Dimxlappasasexcel。“应用程序”定义了EXCEL类。

将xlBook调成Excel。“工作簿”定义工作簿类。

将xlsheet调成Excel格式。“Worksheet”定义工作表类。

Private Sub命令1_Click()'打开EXCEL程序。

Ifdir ("d: \ temp \ excel.bz") = " "然后'判断excel是否打开。

Set xlapp = createobject ("EXCEL。application ")'创建Excel应用程序类。

XlApp。“Visible = True”将EXCEL设置为可见。

set XL book = XL app . workbooks . Open(" d:\ temp \ bb . xls ")'打开EXCEL工作簿。

set XL sheet = XL book . worksheets(1)'打开EXCEL工作表。

Xlsheet。“激活”激活工作表。

Xlsheet。cells (1,1) = "ABC " '为单元格1的行列赋值。

XL book . runautomacros(xlautoopen)在EXCEL中运行启动宏。

其他

MsgBox ("EXCEL已打开")

如果…就会结束

末端接头

私有子命令2_Click()

if Dir(" D:\ temp \ excel . BZ ")& lt;& gt" "然后用VB关闭EXCEL。

Xlbook。runautomacros (xlautoclose)'执行EXCEL关闭宏。

XlBook。“关闭(True)”关闭EXCEL工作簿。

XlApp。退出并关闭EXCEL。

如果…就会结束

' Set xlApp = Nothing '释放EXCEL对象。

结束

末端接头

2.在D盘根目录下创建一个名为Temp的子目录,在Temp目录下创建一个名为“bb.xls”的EXCEL文件。

3.在“bb.xls”中打开Visual Basic编辑器,在项目窗口中单击鼠标按钮选择插入模块,在模块中输入下一个程序保存:

Sub auto_open()

打开“d: \ temp \ excel.bz”作为# 1 '写标志文件输出。

关闭#1

末端接头

Sub auto_close()

Kill "d:\temp\excel.bz " '删除标志文件。

末端接头

4.运行VB程序,点击EXCEL按钮打开EXCEL系统。打开EXCEL系统后,VB程序和EXCEL属于两个不同的应用系统,两者可以同时操作。因为系统增加了判断,所以在VB程序中反复点击EXCEL按钮会提示EXCEL已经打开。如果在EXCEL中关闭EXCEL,然后单击EXCEL按钮,EXCEL将会重新打开。无论EXCEL是否打开,都可以通过VB程序关闭EXCEL。这样就实现了VB和EXCEL的无缝连接。