一、 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与EXCEL的相互勾通相关推荐

  1. 【转】用VB操作Excel详解

    用VB操作Excel详解 一. VB读写EXCEL表: VB本身提自动化功能可以读写EXCEL表,其方法如下: 1.在工程中引用MicrosoftExcel 类型库: 从"工程"菜 ...

  2. 用VB操作Excel(VB6.0)(整理)

    用VB操作Excel(VB6.0)(整理). 一. VB读写EXCEL表: VB本身提自动化功能可以读写EXCEL表,其方法如下: 1.在工程中引用Microsoft Excel类型库: 从" ...

  3. 还有:用VB创建Excel报表

    还有:用VB创建Excel报表             中科院软件所   张   炜     在Visual   Basic中制作报表,通常是用数据环境设计器(Data   Environment   ...

  4. 基于VB和EXCEL的报表设计及打印

    基于VB和EXCEL的报表设计及打印           文/朱诗兵 高栓               在现代管理信息系统的开发中,经常涉及到数据信息的分析.加工,       最终还需把统计结果形成 ...

  5. VB封装excel chart

    Dim obj Set obj = createObject("ChinaaspChart.pie") obj.AddValue "男", 150 obj.Ad ...

  6. 如何用VB实现Excel文件的自动合并

    闲来无事,编写了一个简单而实用的合并Excel文件的函数,能够将多个XLS文件中指定数量的工作表自动合并到一个XLS文件里.当然,如果只是数据合并,则使用ADO就可以实现,但如果要保留表格格式,则恐怕 ...

  7. VB中Excel 2010的导入导出操作

    VB中Excel 2010的导入导出操作 编写人:左丘文 2015-4-11 近来这已是第二篇在讨论VB的相关问题,今天在这里,我想与大家一起分享一下在VB中如何从Excel中导入数据和导出数据到Ex ...

  8. C#/VB.NET Excel数据分列

    C#/VB.NET Excel数据分列 有时候我们需要将保存在Excel单元格中的组合型数据拆分为多列(如将全名拆分为姓和名两列)以方便我们处理.记忆或保存.为了避免重复和大量的手动输入工作,Exce ...

  9. html分列代码,C#/VB.NET Excel数据分列(示例代码)

    C#/VB.NET Excel数据分列 有时候我们需要将保存在Excel单元格中的组合型数据拆分为多列(如将全名拆分为姓和名两列)以方便我们处理.记忆或保存.为了避免重复和大量的手动输入工作,Exce ...

最新文章

  1. TensorFlow练习16: 根据大脸判断性别和年龄
  2. Windows7中快捷方式图标打开方式恢复
  3. 关于mysql的调优
  4. SolrJ搜索功能切换到集群
  5. v8 编译 linux,安装与编译 Javascript V8 Engine
  6. [C++]怎么样实现一个较快的Hash Table
  7. Pandas库学习笔记
  8. linux 快速启动程序,在Linux上安装ULauncher快速启动应用程序的方法
  9. 随想录(学习wrk的代码)
  10. 开源GIS(二十)——CAD数据添加属性转GIS数据
  11. Android IPC(三)AIDL实现跨进程通信
  12. MySql8.0.15修改root密码
  13. 【译】你不知道的Chrome调试工具技巧 第六天:command 菜单
  14. Padavan启用ipv6并允许公网访问内网
  15. 联想入选恒生指数成分股
  16. 公司年终总结新年计划PPT模板
  17. Python抓取网页云音乐指定歌手的歌曲和评论数量
  18. Alexa 世界网站排名研究(下)(转)
  19. W806 基于Arduino开发的GPIO操作示例,勇于尝新
  20. 【开关电源原理及选型介绍】

热门文章

  1. 百家中华老字号故宫过大年
  2. .NET Core微服务之基于Consul实现服务治理(续)
  3. Newtonsoft.Json的简单使用
  4. Lua table笔记
  5. 深入理解JMM(Java内存模型) --(六)final
  6. 网络安全法今日实施 互联网企业对隐私政策重视不足
  7. jQuery实现父窗口的问题
  8. Android中的复制粘贴
  9. LoadRunner监控Linux的三种方法
  10. oracle dump函数