VB 中怎样检查一个文件已经被打开

hzhiyang84 2008-04-09 11:11:50
我在VB中要根据时间打开一个文件:

FileName = "output" & Hour(Now) & Minute(Now) & Second(Now) & "_" & Total & ".bin"
Open FileName For Output As #235
....
Close #235
程序中有时候Close语句会不被执行,
我该怎样判断这个文件已经被打开呢?

...全文
116 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lqq7072000 2008-04-09
搞错了,不好意思!
回复
lqq7072000 2008-04-09

Dim rst As Integer
rst = FileExists(path & FileName) '完整文件路径
If rst = True Then
'文件打开了
end if
回复
diablofriend 2008-04-09
不好意思刚测试了一下 ERR.number=55

你可以写个错误捕获么,判断错误号码,我没记错的话err.number=55的
On Error GoTo Err_Function
FileName = "output" & Hour(Now) & Minute(Now) & Second(Now) & "_" & Total & ".bin"
Open FileName For Output As #235
....
Close #235
....


Err_Function
if err.number=55 then
MsgBox "文件已被打开"
exit function
end if
回复
Open FileName For Output As #235
....
IF IsOpen(235) THEN
Close #235
END IF

Private Function IsOpen(f As Integer) As Boolean
On Error GoTo err
LOF f
IsOpen = True
err:
End Function
回复
diablofriend 2008-04-09
不好意思,刚测试了一下,err.number=55
回复
diablofriend 2008-04-09
你可以写个错误捕获么,判断错误号码,我没记错的话err.number=70的
On Error GoTo Err_Function
FileName = "output" & Hour(Now) & Minute(Now) & Second(Now) & "_" & Total & ".bin"
Open FileName For Output As #235
....
Close #235
....


Err_Function
if err.number=70 then
MsgBox "文件已被打开"
exit function
end if
回复
caofusheng 2008-04-09
通过文件的属性 或者 关闭出错时的错误ID来判断
回复
hzhiyang84 2008-04-09
谢谢,不好意思,没学过VB,所以不是很懂
回复
diablofriend 2008-04-09
modest不是已经给你写了如果判断是打开的则关闭么,
你可以先判断是否已经打开,如果打开则不执行打开的代码,
而直接执行...里面的代码吧!多想想么!


IF IsOpen(235) THEN
....
else
Open FileName For Output As #235
...
END IF

Private Function IsOpen(f As Integer) As Boolean
On Error GoTo err
LOF f
IsOpen = True
exit function
回复
hzhiyang84 2008-04-09
谢谢大家,刚才没说清楚
FileName = "output" & Hour(Now) & Minute(Now) & Second(Now) & "_" & Total & ".bin"
Open FileName For Output As #235
....
Close #235

....里的语句一定要执行.如果文件已经被打开,就关闭它
看了你们说的后,
我这样写不知道行不行


FileName = "output" & Hour(Now) & Minute(Now) & Second(Now) & "_" & Total & ".bin"
On Error Go Err_OpenFile
Open FileName For Output As #235
Goto Start
Err_OpenFile:
if err.number = 55
close #235
Open FileName For Output As #235
end if
Start:....
Close #235

有没有更好的方法呢

不过貌似我这边的问题不是这个,好像我的错误号是52,不知道是什么引起的
回复
相关推荐
发帖
VB基础类
创建于2007-09-28

7490

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2008-04-09 11:11
社区公告
暂无公告