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

作者&投稿:邵怕 (若有异议请与网页底部的电邮联系)
VB6,如何利用VB窗体中的按钮控制Excel中的按钮事件?~

一定要先在VB中添加excel引用。
在工程中引用Microsoft Excel类型库: 从"工程"菜单中选择"引用"栏;选择Microsoft Excel 11.0 Object Library(EXCEL2003),然后选择"确定"。表示在工程中要引用EXCEL类型库。
调用excel的工作表中的命令按钮,代码如下:

Private Sub Command1_Click()
Dim xlApp As Excel.Application
Dim xlBook As Excel.WorkBook
Dim xlSheet As Excel.Worksheet
Dim FileName, SheetName As String
FileName = "e:\data.xls" '打开的工作簿路径名称
SheetName = "sheet1" '命令按钮所在的工作表名
Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象
Set xlBook = xlApp.Workbooks.Open(FileName) '打开已经存在的EXCEL工件簿文件
xlApp.Visible = True '设置EXCEL对象可见(或不可见)
Set xlSheet = xlBook.Worksheets(SheetName) '设置活动工作表
'假设要调用的控件名称是CommandButton1
xlSheet.Shapes("commandbutton1").DrawingObject.object.Value = True '单击控件
xlBook.Close (True) '保存并关闭工作簿
xlApp.Quit '结束EXCEL对象
Set xlApp = Nothing '释放xlApp对象
end sub

Set XLAPP = CreateObject("Excel.Application")
Set xlBook = XLAPP.Workbooks.Add
Set xlsheet = xlBook.Worksheets(1) xlsheet.Cells(1, 2) = “项目说明" XLAPP.Workbooks(1).Saved = True '/FALSE 判断文件是否需要保存
XLAPP.Workbooks(1).SaveAs strfile
xlBook.Close
Set xlsheet = Nothing
Set xlBook = Nothing
Set XLAPP = Nothing

代码很多,只能给你关键代码了。开动你聪明的大脑,会成功的!

VB是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。因此有很多程序员现在已经充分利用EXECL的强大报表功来实现报表功能。但由于VB与EXCEL由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。

一、 VB读写EXCEL表:

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

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

从"工程"菜单中选择"引用"栏;选择Microsoft Excel 9.0 Object Library(EXCEL2000),然后选择"确定"。表示在工程中要引用EXCEL类型库。

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

Dim xlApp As Excel.Application
Dim xlBook As Excel.WorkBook
Dim xlSheet As Excel.Worksheet

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

Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象
Set xlBook = xlApp.Workbooks.Open("文件名") '打开已经存在的EXCEL工件簿文件
xlApp.Visible = True '设置EXCEL对象可见(或不可见)
Set xlSheet = xlBook.Worksheets("表名") '设置活动工作表
xlSheet.Cells(row, col) =值 '给单元格(row,col)赋值
xlSheet.PrintOut '打印工作表
xlBook.Close (True) '关闭工作簿
xlApp.Quit '结束EXCEL对象
Set xlApp = 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提供一个Visual Basic编辑器,打开Visual Basic编辑器,其中有一工程属性窗口,点击右键菜单的"插入模块",则增加一个"模块1",在此模块中可以运用Visual Basic语言编写函数和过程并称之为宏。其中,EXCEL有两个自动宏:一个是启动宏(Sub Auto_Open()),另一个是关闭宏(Sub Auto_Close())。它们的特性是:当用EXCEL打含有启动宏的工簿时,就会自动运行启动宏,同理,当关闭含有关闭宏的工作簿时就会自动运行关闭宏。但是通过VB的自动化功能来调用EXCEL工作表时,启动宏和关闭宏不会自动运行,而需要在VB中通过命令xlBook.RunAutoMacros (xlAutoOpen)和xlBook.RunAutoMacros (xlAutoClose) 来运行启动宏和关闭宏。

三、 VB与EXCEL的相互勾通:

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

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

四、举例:

1、在VB中,建立一个FORM,在其上放置两个命令按钮,将Command1的Caption属性改为EXCEL,Command2的Caption属性改为End。然后在其中输入如下程序:

Dim xlApp As Excel.Application '定义EXCEL类
Dim xlBook As Excel.Workbook '定义工件簿类
Dim xlsheet As Excel.Worksheet '定义工作表类
Private Sub Command1_Click() '打开EXCEL过程
If Dir("D:\temp\excel.bz") = "" Then '判断EXCEL是否打开
Set xlApp = CreateObject("Excel.Application") '创建EXCEL应用类
xlApp.Visible = True '设置EXCEL可见
Set xlBook = xlApp.Workbooks.Open("D:\temp\bb.xls") '打开EXCEL工作簿
Set xlsheet = xlBook.Worksheets(1) '打开EXCEL工作表
xlsheet.Activate '激活工作表
xlsheet.Cells(1, 1) = "abc" '给单元格1行驶列赋值
xlBook.RunAutoMacros (xlAutoOpen) 运行EXCEL中的启动宏
Else
MsgBox ("EXCEL已打开")
End If
End Sub

Private Sub Command2_Click()
If Dir("D:\temp\excel.bz") <> "" Then '由VB关闭EXCEL
xlBook.RunAutoMacros (xlAutoClose) '执行EXCEL关闭宏
xlBook.Close (True) '关闭EXCEL工作簿
xlApp.Quit '关闭EXCEL
End If
Set xlApp = Nothing '释放EXCEL对象
End
End Sub

2、在D盘根目录上建立一个名为Temp的子目录,在Temp目录下建立一个名为"bb.xls"的EXCEL文件。

3、在"bb.xls"中打开Visual Basic编辑器,在工程窗口中点鼠标键选择插入模块,在模块中输入入下程序存盘:

Sub auto_open()
Open "d:\temp\excel.bz" For Output As #1 '写标志文件
Close #1
End Sub
Sub auto_close()
Kill "d:\temp\excel.bz" '删除标志文件
End Sub

4、运行VB程序,点击EXCEL按钮可以打开EXCEL系统,打开EXCEL系统后,VB程序和EXCEL分别属两个不同的应用系统,均可同时进行操作,由于系统加了判断,因此在VB程序中重复点击EXCEL按钮时会提示EXCEL已打开。如果在EXCEL中关闭EXCEL后再点EXCEL按钮,则会重新打开EXCEL。而无论EXCEL打开与否,通过VB程序均可关闭EXCEL。这样就实现了VB与EXCEL的无缝连接。

好详尽的回答阿!赞一声!
我先收藏起来,哈哈哈哈哈。


VB中Form_Initialize这个事件的用处何在?
可以 Initialize 事件在 Load 事件之前发生。这个事件一般用来初始化数据 此时窗口还没有创建,所以有关窗口的操作是不行的 向ImageList中加载图片不会影响到窗口 是可以的

在VB中怎么修改控件的NAME属性啊?也就是控件的名称!
name只有在属性框改,name要是可以随便修改,那你的代码事件不就出现很多问题了吗 caption是可以随意修改的,比如说form1.caption="Hello!"

VB中Form_Initialize这个事件的用处何在?
不建议这样做。Form_Initialize事件是在控件未加载的时候。建议你把加载图片写在Form_Load中。

vb中使用windows media player 控件设计一个MP3播放器,发现控件中的上...
这是因为引用wmp控件播放音乐你是使用WindowsMediaPlayer1.URL = "a.mp3" ,导致每次传递给wmp控件音乐数为1首,所以前进与后退按钮不可用,你可以建立一个播放列表,如二楼那样 引用2楼 你在你的播放器所在目录放一个a.m3u文件,文件内容类似 N:\\影音文件\\经典歌曲MP3\\好听Mp3\\知音.mp3 N:\\影音...

VB程序高手何在
程序运行后,单击按钮在窗体上显示的是( C)。A. 5 3 1 B. 7 5 3 C. 9 7 5 D. 11 9 7 7. 下列程序:Option Base 1 Private Sub Command1_Click()Dim x(10)Dim i As Integer For i = 1 To 10 x(i) = 10 - i + i Mod 2 Next For i = 10 To 1 Step -2 Print ...

关于vb中format函数的小小问题~
在这里format(1234.565,”###.###”)表示数字占位。主要是对于小数点后面的数有作用。这里小数点后面有四个“#”,如果只有两个,而且前面的数的小数位不只两位的话,就会只保留两位小数。比如format(1234.565,”###.##”)得到的数值就是1234.57 当然小数点左边的#个数不会影响最后结果。

为什么在vb6.0中向listbox添加的项无法显示?
楼主您好!aaaa和bbbb都是字符串,需要加上双引号("")所以改成:List1.AddItem "aaaa"List1.AddItem "bbbb"或者加入代码:Dim aaaa As String,bbbb As String aaaa = "aaaa"bbbb = "bbbb"望采纳~~

VB编程“求1到1000以内所有奇数之和”(do while 结构)
先把代码发出来,等会在评论中给你解释吧。复制粘贴以下代码:Option ExplicitPrivate Sub Command1_Click()Dim i As LongDim s As Longs = 0i = 0Do While i < 1000i = i + 1If i Mod 2 = 1 Thens = s + iEnd IfLoopPrint "计算1至1000之间的奇数之和为:"; sEnd Sub看运行结果吧 WBCR...

在VB.NET中,有些操作方法在书写代码时加与不加括号,有何区别。如show...
完全没有!vb .NET 编辑器会自动给你加上括号(如果需要的话),所以完全不用在意这些细节,妥妥的。可以自己测试下嘛。

当今社会学习vb意义何在?
1、有了C语言的基础,学习VB就容易的多。2、当今社会,多学点知识,没有坏处,技不压身,有利于以后的发展。3、学习了以后,要学以致用,才不至于淡忘。4、学任何一门编程都是这样,关键在于用不用,不光C++和VB是这样,其他的像Java、C#、PHP等等也是这样。C语言是一门通用计算机编程语言,应用...

泉山区14729918240: 如何在VB中调用EXCEL表格数据? -
脂夏妇炎: 1、打开VB-》在form1上增加一个command1按钮,双击command1按钮,把以下代码放入窗体内; 2、运行前,在菜单的选“工程”->“引用”->找到Microsoft Excel 12.0 Object Library->确定;然后才可以运行; 3、代码如下: Dim ExApp As ...

泉山区14729918240: 如何在VB窗体中直接操作EXCEL? -
脂夏妇炎: Set XLAPP = CreateObject("Excel.Application") Set xlBook = XLAPP.Workbooks.Add Set xlsheet = xlBook.Worksheets(1) xlsheet.Cells(1, 2) = “项目说明"XLAPP.Workbooks(1).Saved = True '/FALSE 判断文件是否需要保存 XLAPP....

泉山区14729918240: VB窗体下如何嵌入一个EXCEL表 -
脂夏妇炎: 1.部件-添加-可插入对象--选择excel 表格就可以在窗体添加该表格控件2.工程-引用-Microsoft Excel 11.0 Object Library 下面给个简单的例子 Private Sub Command1_Click() Dim xlExcel As Excel.Application Dim xlBook As Excel.Workbook Dim ...

泉山区14729918240: 如何在VB中调用EXCEL -
脂夏妇炎: 1.在当前目录建立一个空xls文件,a.xls2.创建bat文件: open "a.bat" for output as #1:print #1,app.path & "\a.xls":close3.shellbat文件:shell("a.bat")

泉山区14729918240: 怎样直接将Excel表加载到vb窗体上 -
脂夏妇炎: 打开“部件”窗口,选择“Insertable Object”选项卡,勾选Microsoft Excel 工作表

泉山区14729918240: vb中怎么读取excel文件 -
脂夏妇炎: 1、调用Excel对象打开EXCEL文件后,读取文件内容*************************************** 在VB中要想调用Excel,需要打开VB编程环境“工程”菜单中的“引用”项目,并选取项目中的“MicrosoftExcel 11.0 object library”项.由于你的Excel版本...

泉山区14729918240: 请问如何使用vb调用 excel 文件? -
脂夏妇炎: 添加引用 Microsoft Excel 12.0 Object Library (视你的office版本不同有所差异) 然后就可以用这个来编程啦 Dim xlapp As Excel.Application '代表excel程序 Dim wkBook As Excel.Workbook '代表excelworkbook(也就是excel工作簿文件 .xls .xlsx...

泉山区14729918240: 在vb窗体中显示并编辑excel文档?各位大侠请帮忙!在此感谢了! -
脂夏妇炎: 在窗体添加excel对象运行后在excel上双击或右键选择'打开'或'编辑'都行

泉山区14729918240: 怎么可以在VB中调用excel? -
脂夏妇炎: 在工程中引用Microsoft Excel类型库: 从"工程"菜单中选择"引用"栏;选择Microsoft Excel 11.0 Object Library(EXCEL2003),然后选择"确定".表示在工程中要引用EXCEL类型库. Dim xlApp As Excel.Application Dim xlBook As Excel....

泉山区14729918240: 如何在VB的窗体中显示Excel报表 -
脂夏妇炎: Option Explicit Public xlApp As New Excel.Application Public xlBook As Excel.Workbook Public xlSheet As Excel.Worksheet Public Function SaveAsExcel(rsErr As ADODB.Recordset, sFileName As String, _ sSheet As String, sOpen As String, ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网