CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  VB.NET

如何判断一个excel文件是否处于打开状态呢?[用vb代码]

楼主jfyhdcm()2005-09-01 16:33:14 在 .NET技术 / VB.NET 提问

如何判断一个excel文件是否处于打开状态呢?[用vb代码]  
  用dir$()函数可以判断一个文件是否存在,可是无法判断是否是否处于打开状态。如果要将一个记录集导成excel文件,可是这个文件正处理打开状态,则会产生错误的。可是如何判断磁盘上的某个excel文件是否处于打开状态呢? 问题点数:20、回复次数:5Top

1 楼Randy_Lau(水恋无华)回复于 2005-09-01 16:53:04 得分 0

推荐看看:  
   
  http://www.yesky.com/20030217/1652372.shtmlTop

2 楼jfyhdcm()回复于 2005-09-01 17:58:59 得分 0

谢谢,不过那个文章的办法不太实用呀?每打开excel就在硬盘上写个文本文件,好象不太现实。大家以为呢?Top

3 楼jfyhdcm()回复于 2005-09-01 18:01:05 得分 0

以下内容源于yesky.com  
  就是二楼推的文章  
  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的无缝连接。  
   
  Top

4 楼jfyhdcm()回复于 2005-09-01 21:00:55 得分 0

说手出来说说呀!Top

5 楼Randy_Lau(水恋无华)回复于 2005-09-02 14:53:05 得分 0

不好意思   网络一直不通  
   
  Excel在进程中是判断不出来到底被打开的是哪个文件的,想要判断Excel是否处于打开状态除上面的方法我还真不知道还能怎么做。除非这个Excel是被你自己的程序打开的,这样你还可以在每次打开Excel文件之后设置一个标志位。  
   
  其实我们的处理方式是将现有的Excel文档在一个Temp文件夹下另存一份,然后所有的数据操作都对这个文件进行,而每次程序启动的时候我们都会清空Temp文件夹。这样无论当前Excel文档是否出于打开状态都不会有影响。  
   
  你觉得呢?Top

相关问题

  • 例子代码:判断是否在vb IDE
  • 用ado代码实现在vb中判断索引
  • 求VB代码:如何判断一个ASPX文件已存在?
  • 如何用VB代码判断数据库第一条记录为空?
  • vb 6.0中怎样用代码判断一个word文档翻页
  • 数据库为sql server,怎样用VB代码判断表MyTable是否存在
  • 在VB中如何调用EXCEL中的宏代码
  • 用VB打不开EXCEL,附代码!大哥们帮我看看!~
  • 在VB中如何判断EXCEL是否打开?
  • 在EXCEL中使用VB如何对时间进行判断?

关键词

  • excel
  • 文件
  • vb
  • 模块
  • 属性
  • xlbook
  • 宏
  • xlapp
  • 打开
  • 程序

得分解答快速导航

  • 帖主:jfyhdcm

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo