求Excel避免重复打开文件的VBA编码

如题,如果文件已打开就跳过,否则打开该文件。求VBA编码。谢谢!... 如题,如果文件已打开就跳过,否则打开该文件。
求VBA编码。谢谢!
展开
 我来答
2724421
2012-07-19 · TA获得超过2493个赞
知道大有可为答主
回答量:1551
采纳率:71%
帮助的人:949万
展开全部
1.直接用代码判断文件是否打开,因为你有多个过程要判断一个指定的文件是否打开,建议你把下面代码中的BL变量定义为公共变量.其他的过程,直接判断BL的值,就可以知道指定的文件是否打开了.
Sub openfile()
Dim FilePath, FileName As String
Dim BookName As Workbook
Dim BL As Boolean
FilePath = "C:\AAAAA\BBBBB.xls" '包含路径的文件名
FileName = Right(FilePath, Len(FilePath) - InStrRev(FilePath, "\")) '获取文件名
For Each BookName In Workbooks '判断指定文件是否打开的循环
If BookName.Name = FileName Then BL = True '如果指定的文件已经打开 BL变量赋值为True
Next
If BL = False Then Workbooks.Open FileName:=FilePath 'if BL的值为False,则执行打开指定文件
End Sub

2.用自定义函数
因为你有多个宏要判断指定的文件是否打开,用一个判断文件是否打开的的自定义函数 ,在你的过程中调用这个函数

Function OpenFileBL(filepath) As Boolean
Dim filename As String
Dim BookName As Workbook
filename = Right(filepath, Len(filepath) - InStrRev(filepath, "\")) '获取文件名
For Each BookName In Workbooks '判断指定文件是否打开的循环
If BookName.Name = filename Then OpenFileBL = True '如果指定的文件已经打开 BL变量赋值为True
Next
End Function

Sub test()
fp = "C:\AAAAA\BBBBB.xls"
If Not OpenFileBL(fp) Then Workbooks.Open filename:="C:\AAAAA\BBBBB.xls"
'通过Openfilebl自定义函数判断指定的文件是否打开,如果没有打开就打开指定的文件
End Sub
表里如一
2012-07-19 · 知道合伙人软件行家
表里如一
知道合伙人软件行家
采纳数:2066 获赞数:11638
从事6年生产管理,期间开发了多款小软件进行数据处理和分析,后

向TA提问 私信TA
展开全部
引用sxpose兄弟空间的一段代码

VBA 判断某文件是否打开

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
追问
Workbooks.Open FileName:="C:\AAAAA\BBBBB.xls"
还望再详尽一些。以上是我文件名称路径。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ah_wjh
推荐于2016-08-04 · TA获得超过802个赞
知道小有建树答主
回答量:1123
采纳率:50%
帮助的人:980万
展开全部
dim wk as object
on error resume next
set wk=workbooks("工作薄名")
if err then '如果是未打开的工作薄,这里就会出现一个错误
workbooks.open .......
.......
on error goto 0'去掉错误捕获
更多追问追答
追问
Workbooks.Open FileName:="C:\AAAAA\BBBBB.xls"
还望再详尽一些。以上是我文件名称路径。
追答
set wk=workbooks("BBBBB")
打开语句用你自己的就行
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天际孤帆
2012-07-19 · TA获得超过781个赞
知道小有建树答主
回答量:227
采纳率:0%
帮助的人:72.8万
展开全部
Excel本身就有这个功能啊,你这不重复做无用功了吗?
追问
你好!我是多个宏中用到这个文件,但宏没有一定顺序。所以每个宏里都要打开文件,但调用第二个宏时就提示文件已打开,如重新打开就如何如何我也没记清。是这个意思。所以求编码。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式