ahlzl 发表于 2004-1-2 13:39:00

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

我在写VBA时碰到这个问题:要判断一个EXCEL文件(如:C:\1.xls)是否已打开,若已打开则激活,不然则将其打开.看来是很简单的问题,我却总写不好.请各位高手多多指教,先谢谢了!

efan2000 发表于 2004-1-3 21:29:00

思路是当文件以锁定方式打开时,如果文件已经打开就会出错。


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

Function IsFileOpened(ByVal FileName As String) As Boolean
    IsFileOpened = True
   
    ' 使用锁定方式打开文件
    On Error GoTo ErrTrap
    Open FileName For Binary Lock Read Write As #1
    IsFileOpened = False
    Close #1
    Exit Function
   
ErrTrap:
    Close #1
    On Error GoTo 0
End Function

ahlzl 发表于 2004-1-3 22:09:00

谢谢efan大师!
我还有个问题:我在你的代码中加了一行,想激话这个EXCEL文件,结果出错.(已正确引用)
Sub test()

    If IsFileOpened("c:\2.xls") Then
      MsgBox "文件已经打开!"
      Workbooks("c:\2.xls").Activate
    End If
End Sub

Function IsFileOpened(ByVal FileName As String) As Boolean
    IsFileOpened = True
   
    ' 使用锁定方式打开文件
    On Error GoTo ErrTrap
    Open FileName For Binary Lock Read Write As #1
    IsFileOpened = False
    Close #1
    Exit Function
   
ErrTrap:
    Close #1
    On Error GoTo 0
End Function

efan2000 发表于 2004-1-3 22:56:00

Workbooks后面的参数必须是一个索引值或者名称(注:名称一般是不包含路径的文件名称),如:2.xls。就是在标题栏上显示的。

ahlzl 发表于 2004-1-4 21:20:00

to efan大师:我把Workbooks("c:\2.xls").Activate改为Workbooks("2.xls").Activate,还是不行.

efan2000 发表于 2004-1-4 22:41:00

1、能不能说明一下运行的环境,是在AutoCAD中运行,还是在Excel中执行。
2、是不是程序运行错误。
3、菜单“工具”-选项-视图中的任务栏中的窗口有没有去掉打勾,即任务栏上只能显示一个Excel的图标。

ahlzl 发表于 2004-1-6 21:32:00

本帖最后由 作者 于 2004-1-6 22:31:22 编辑

我的问题还没解决啊!我这样又写了一段代码:
Sub CAD_excel()
'先引用EXCEL
Dim ex As Excel.Application
Dim wk As Workbook
Dim wc As Worksheet
Set wk = ex.Workbooks("2.xls")   '该文件已先打开
Set wc = wk.Worksheets("sheet1")
wc.Cells(1, 1) = 2
End Sub
还是出错!Set wk = ex.Workbooks("2.xls")
高手啊,快来帮帮我啊!

在efan大师的指导下,搞定了!在此再次表示感谢!!!

slsldu 发表于 2004-1-12 22:20:00

页: [1]
查看完整版本: 怎样在AutoCAD的VBA中判断一个EXCEL文件是否已打开