作者:绿色风
分类:
时间:2022-08-17
浏览:620
楼主 wise |
Q:VBA如何判断该文件是否打开? A:见下例,定义了一个自定义函数
- Function IsFileOpen(FileName As String)
- Dim iFilenum As Long
- Dim iErr As Long
- On Error Resume Next ' 改变错误处理的方式。
- iFilenum = FreeFile() '使用 FreeFile 给iFilenum提供一个尚未使用的文件号
- Open FileName For Input As #iFilenum '打开该文件
- Close iFilenum
- iErr = Err
- On Error GoTo 0
- Select Case iErr
- Case 0: IsFileOpen = False '文件没有打开
- Case 70: IsFileOpen = True '文件已经打开
- Case Else: Error iErr
- End Select
- End Function
- Sub OpenTest()
- Dim myfile As String
- myfile = ThisWorkbook.Path & "\mybook.xls" '当前目录下的mybook文件
- If Not IsFileOpen(myfile) Then '判断文件是否打开,如果文件没有打开的话,则打开该文件
- Workbooks.Open myfile
- End If
- End Sub
VBA判读文件是否打开.rar |
2楼 gvntw |
判断文件是否打开,可以简单点。
- Sub gvntw()
- On Error GoTo 1
- Set wb = Application.Workbooks("Book1.xls")
- MsgBox "文件已打开"
- Exit Sub
- 1:
- MsgBox "文件未打开"
- End Sub
|
3楼 wise |
发哥那个代码只能判断,判断文件没有打开后,是不打开文件
|
4楼 gvntw |
你本来就是判断文件是否打开啊,呵呵。 |
5楼 xyh9999 |
gvntw,wise两位版主辛苦了,我无名小卒也说两句,说得不好不要见怪耶。 1) gvntw的这个程序应该是考虑不太全面,当文件单独用两个excel线程(或叫单独内存)打开时你的程序判断肯定出错,用其他工具打开了文件的话你的程序就更没办法判断了!因为我们对“打开”的理解不能局限理解于“仅用excel的单线程打开”。 2) wise的这个比较好,但应把Open FileName For Input As #iFilenum 改成Open FileName For Append As #iFilenum ,否则运行也经常出错。 3) wise的程序最好先判断一下文件是否存在,不然如果判断一个机器中不存在的文件,你的文件就会生成一个同名的文件,产生不必要的垃圾。
你们看是不是可以把程序改成这样:
- Function IsFileOpen(FileName)
- Dim iFilenum As Long
- Dim iErr As Long
- iFilenum = FreeFile() '使用 FreeFile 给iFilenum提供一个尚未使用的文件号
- If Dir(FileName) <> "" Then
- On Error Resume Next ' 改变错误处理的方式。
- Open FileName For Append As #iFilenum '打开该文件
- iErr = Err
- Select Case iErr
- Case 0:
- IsFileOpen = "文件没打开"
- Case 70:
- IsFileOpen = "文件已打开"
- Case Else:
- IsFileOpen = "出错号为" & iErr
- End Select
- Close iFilenum
- Err.Clear
- On Error GoTo 0
- Else
- IsFileOpen = "文件不存在"
- End If
- End Function
- '#######################
- Sub 例子()
- Dim myfile As String
- myfile = ThisWorkbook.Path & "\mybook.xls" '当前目录下的mybook文件
- MsgBox IsFileOpen(myfile)
- End Sub
|
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一