明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3814|回复: 7

怎样在AutoCAD的VBA中判断一个EXCEL文件是否已打开

[复制链接]
发表于 2004-1-2 13:39:00 | 显示全部楼层 |阅读模式
我在写VBA时碰到这个问题:要判断一个EXCEL文件(如:C:\1.xls)是否已打开,若已打开则激活,不然则将其打开.看来是很简单的问题,我却总写不好.请各位高手多多指教,先谢谢了!
发表于 2004-1-3 21:29:00 | 显示全部楼层
思路是当文件以锁定方式打开时,如果文件已经打开就会出错。


  1. Sub test()
  2.     If IsFileOpened("d:\accountlist.xls") Then
  3.         MsgBox "文件已经打开!"
  4.     End If
  5. End Sub

  6. Function IsFileOpened(ByVal FileName As String) As Boolean
  7.     IsFileOpened = True
  8.    
  9.     ' 使用锁定方式打开文件
  10.     On Error GoTo ErrTrap
  11.     Open FileName For Binary Lock Read Write As #1
  12.     IsFileOpened = False
  13.     Close #1
  14.     Exit Function
  15.    
  16. ErrTrap:
  17.     Close #1
  18.     On Error GoTo 0
  19. End Function
 楼主| 发表于 2004-1-3 22:09:00 | 显示全部楼层
谢谢efan大师!
我还有个问题:我在你的代码中加了一行,想激话这个EXCEL文件,结果出错.(已正确引用)

  1. Sub test()

  2.     If IsFileOpened("c:\2.xls") Then
  3.         MsgBox "文件已经打开!"
  4.         [color=red]Workbooks("c:\2.xls").Activate[/color]
  5.     End If
  6. End Sub

  7. Function IsFileOpened(ByVal FileName As String) As Boolean
  8.     IsFileOpened = True
  9.    
  10.     ' 使用锁定方式打开文件
  11.     On Error GoTo ErrTrap
  12.     Open FileName For Binary Lock Read Write As #1
  13.     IsFileOpened = False
  14.     Close #1
  15.     Exit Function
  16.    
  17. ErrTrap:
  18.     Close #1
  19.     On Error GoTo 0
  20. End Function
发表于 2004-1-3 22:56:00 | 显示全部楼层
Workbooks后面的参数必须是一个索引值或者名称(注:名称一般是不包含路径的文件名称),如:2.xls。就是在标题栏上显示的。
 楼主| 发表于 2004-1-4 21:20:00 | 显示全部楼层
to efan大师:我把Workbooks("c:\2.xls").Activate改为Workbooks("2.xls").Activate,还是不行.
发表于 2004-1-4 22:41:00 | 显示全部楼层
1、能不能说明一下运行的环境,是在AutoCAD中运行,还是在Excel中执行。
2、是不是程序运行错误。
3、菜单“工具”-选项-视图中的任务栏中的窗口有没有去掉打勾,即任务栏上只能显示一个Excel的图标。
 楼主| 发表于 2004-1-6 21:32:00 | 显示全部楼层
本帖最后由 作者 于 2004-1-6 22:31:22 编辑

我的问题还没解决啊!我这样又写了一段代码:

  1. Sub CAD_excel()
  2. '先引用EXCEL
  3. Dim ex As Excel.Application
  4. Dim wk As Workbook
  5. Dim wc As Worksheet
  6. Set wk = ex.Workbooks("2.xls")   '该文件已先打开
  7. Set wc = wk.Worksheets("sheet1")
  8. wc.Cells(1, 1) = 2
  9. End Sub

还是出错!Set wk = ex.Workbooks("2.xls")
高手啊,快来帮帮我啊!

在efan大师的指导下,搞定了!在此再次表示感谢!!!
发表于 2004-1-12 22:20:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 09:45 , Processed in 0.191655 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表