前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA: 判断某个Excel文件是否已打开

VBA: 判断某个Excel文件是否已打开

作者头像
Exploring
发布2022-09-20 14:42:37
5.6K0
发布2022-09-20 14:42:37
举报
文章被收录于专栏:数据处理与编程实践

文章背景:在操作某个Excel文件时,有时需要判断该文件是否已打开。下面提供两种自定义函数。

(1)遍历法

代码语言:javascript
复制
Function IsWbOpen1(strPath As String) As Boolean

  '如果目标工作簿已打开则返回TRUE,否则返回FALSE
  'Codes adapted from:https://zhuanlan.zhihu.com/p/30977643
  'strPath:指定文件的全路径(Full path)
  
  Dim i As Integer
  
  For i = Workbooks.Count To 1 Step -1
  
      If Workbooks(i).FullName = strPath Then Exit For
           
  Next
  
  If i = 0 Then
  
      IsWbOpen1 = False
      
  Else
  
      IsWbOpen1 = True
      
  End If
  
End Function

示例:判断文件指定路径的文件是否已打开,如果未打开,则打开该文件。

代码语言:javascript
复制
Sub Test1()

   Dim str_name As String, str_path As String

   str_name = "test1.xlsx"
   str_path = "E:\test1.xlsx"

   If IsWbOpen1(str_path) Then
   
       Workbooks(str_name).Activate
       
   Else
   
       Workbooks.Open (str_path)
       
   End If
   
End Sub

如果已打开的Excel文件较多,则遍历法比较费时间,下面介绍试错法。

(2)试错法

代码语言:javascript
复制
Function IsWbOpen2(strName As String) As Boolean

    '如果目标工作簿已打开则返回TRUE,否则返回FALSE
    'Codes adapted from:https://zhuanlan.zhihu.com/p/30977643
    'strName:指定文件的文件名(File name)
   
    Dim wk As Workbook
   
    '如果工作簿没打开,程序会报错,故使用On Error Resume Next
    On Error Resume Next
    Set wk = Workbooks(strName)
    
    If Err.Number = 0 Then
    
        IsWbOpen2 = True
        
    Else
    
        IsWbOpen2 = False
        
    End If
    
    On Error GoTo 0
    
End Function

示例:判断文件是否已打开(通过文件名来判断),如果未打开,则打开该文件。

代码语言:javascript
复制
Sub Test2()

    Dim str_name As String, str_path As String

    str_name = "test1.xlsx"
    str_path = "E:\test1.xlsx"

   If IsWbOpen2(str_name) Then
   
       Workbooks(str_name).Activate
       
   Else
   
       Workbooks.Open (str_path)
       
   End If
   
End Sub

参考资料:

[1] VBA如何判断工作簿是否打开(https://zhuanlan.zhihu.com/p/30977643)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据处理与编程实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档