注册 登录
编程论坛 VB6论坛

如下,判断指定的excel文件是否打开,如果打开,则关闭。但关闭时出错”下标越界

lgq1001 发布于 2023-09-08 18:26, 1452 次点击

如下,判断指定的excel文件是否打开,如果打开,则关闭。但关闭时出错”下标越界“,请大侠帮忙解决一下,谢谢。

Sub test()
  Dim f As String
  f = "C:\Users\Administrator\Desktop\test.xlsx"
  bl = IsFileOpen(f)
  If bl Then
    MsgBox "打开"
    Excel.Workbooks("test.xlsx").Close False
  Else
    MsgBox "没有打开"
  End If
end sub

Function IsFileOpen(filename As String) As Boolean
      Dim filenum As Integer, errnum As Integer
      On Error Resume Next
      filenum = FreeFile()
      Open filename For Input Lock Read As #filenum
      Close filenum
      errnum = Err
      On Error GoTo 0
      Select Case errnum
          Case 0: IsFileOpen = False
          Case 70: IsFileOpen = True
          Case Else: Error errnum
      End Select
  End Function
3 回复
#2
约定的童话2023-09-09 16:00
excel进程没有创建,需要先创建excel进程才能关闭。。。。
#3
风吹过b2023-09-09 17:49
不是创建 excel 进程,而是 引用 excel 进程
前面已判断这个文件已打开,那么说可以认为 excel 已在运行,需要引用它,
  然后操作关闭文件。
如果是创建新的 excel 进程,得到的新进程,它这时是没有打开任何工作簿的。

在引用 excel 进程后,也要判断一下是否存在错误,如果错误,说明 文件不是用 excel 打开的。


#4
yuma2023-10-25 10:57
进程存在即打开,进程不存在即关闭。

1