永发信息网

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

答案:4  悬赏:10  手机版
解决时间 2021-03-04 20:50
如题,如果文件已打开就跳过,否则打开该文件。
求VBA编码。谢谢!
最佳答案
dim wk as object
on error resume next
set wk=workbooks("工作薄名")
if err then '如果是未打开的工作薄,这里就会出现一个错误
workbooks.open .......
.......
on error goto 0'去掉错误捕获
全部回答
把下面的代码复制到工作簿的 thisworkbook 模块里面就可以了 option explicit private sub workbook_open()     dim l as long     l = sheets("p").range("a60000").end(xlup).row     '这里假定日期保存在a列的最后一个单元格,你可以自己修改range("a60000")为range("c60000")等等。     if sheets("p").range("a" & l).value = datevalue(now) then         '这里也假定日期保存在a列的最后一个单元格,你可以自己修改range("a" & l)为range("c" & l)等等,和上面的要一致。         p2         thisworkbook.save     end if end sub sub p2()     msgbox "yes" end sub
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
引用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
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
从台北火车站如何走到高铁站﹖
单倍体育种的优点是 A. 操作简便B. 明显缩短
含有ig的英语单词有哪些
太阳出来了田丰编曲的歌曲彝族民歌
黄冈密卷VS海淀考王
重庆空乘礼仪培训学校哪里有,请告知地点及电
大米存放时间过长,到底能不能吃
平方根和立方根的题目(2x+3)(2x-3)-4x(x-1)+(
近反义词在线查询
谁有朴灿烈这套衣服的照片?或者高清无水印适
遇到一个很坏的人,而且还是亲戚怎么办?
双人联机手机游戏
第二次世界大战以后,主要资本主义国家迎来了
商务局公务员待遇怎么样?竞争激烈吗?
刚跟朋友合伙弄了餐馆,听说得装个油烟净化器
推荐资讯
我出轨有半年了,我老公现在还不知道,我都不
宋慧乔气质是怎么培养起来的
booking上酒店是国际星级还是当地星级
把自己男朋友数落了,会怎样?
economic modelling 是sci吗
17款手风福克斯有没有必要换SYNC3中控电脑
博源养生馆我想知道这个在什么地方
火车停车可以上厕所吗
qq群里视频唱歌怎么才能显示歌词和音乐伴奏?
NVIDIA GeForce Experience显示try again lat
喝茶加多少水多少茶叶不要讲克,讲几片茶叶,
杠上花我想知道这个在什么地方
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?