今天爆震室管理系统——学生查看机器状态的时候发现有一个“导出到excel”的button。我去。感情还得跟excel表链接。
于是我咬碎了一地小银牙。一个下午都在查询vb与excel
的链接的问题。
我大体的思路是:
首先。在vb中引用Excel类型库。
如图:
其次,声明excel的对象。这里不单单仅仅是声明一个excel表,还要声明工作簿和工作表
例如以下代码:
Dim xlApp As Excel.Application |
|
Dim xlBook As Excel.Workbook |
|
Dim xlSheet As Excel.Worksheet |
最后,就能够在vb程序对excel表进行操作。
在机房管理系统中主要的操作有:
Set xlApp = CreateObject("Excel.Application") '创建EXCEL应用类 |
|
xlApp.Visible = |
|
Set xlBook = xlApp.Workbooks.Open(App.Path & "\新建 Microsoft Excel 工作表.xls") '打开EXCEL工作簿 |
|
Set xlSheet = xlBook.Worksheets(1) '打开EXCEL工作表 |
|
xlSheet.Activate '激活工作表 |
|
xlSheet.Cells(1, 1) = myflexgrid.TextMatrix(0, 0)……'给单元格1行驶列赋值 |
|
xlBook.RunAutoMacros (xlAutoOpen) '执行EXCEL中的启动宏 |
另外,另一些拓展的操作:
xlSheet.PrintOut '打印工作表 xlBook.Close (True) '关闭工作簿 xlApp.Quit '结束EXCEL对象 Set xlApp = Nothing '释放xlApp对象 |
问题1(excel宏的作用):
EXCEL提供一个VisualBasic编辑器,打开VisualBasic编辑器,当中有一project属性窗体,点击右键菜单的"插入模块",则添加一个"模块1",在此模块中能够运用VisualBasic语言编写函数和过程并称之为宏。当中,EXCEL有两个自己主动宏:一个是启动宏(Sub Auto_Open()),还有一个是关闭宏(SubAuto_Close())。它们的特性是:当用EXCEL打含有启动宏的工簿时,就会自己主动执行启动宏。同理,当关闭含有关闭宏的工作簿时就会自己主动执行关闭宏。可是通过VB的自己主动化功能来调用EXCEL工作表时,启动宏和关闭宏不会自己主动执行,而须要在VB中通过命令xlBook.RunAutoMacros(xlAutoOpen)和xlBook.RunAutoMacros
(xlAutoClose)来执行启动宏和关闭宏。
(我的理解就是EXCEL中的VBA就是VB在EXCEL中的应用)
问题2(下标越界):
面对着问题应该出在flexgrid控件上,你在设计界面时把初始列数9。既能够攻克了。
特别说明:
在运用以上VB命令操作EXCEL表时,除非设置EXCEL对象不可见。否则VB程序可继续运行其他操作。也可以关闭EXCEL。同一时候也可对EXCEL进行操作。但在EXCEL操作过程中关闭EXCEL对象时,VB程序无法知道。假设此时使用EXCEL对象。则VB程序会产生自己主动化错误。
形成VB程序无法全然控制EXCEL况。作VB与EXCEL失去联系。
版权声明:本文博主原创文章,博客,未经同意不得转载。