office交流網(wǎng)--QQ交流群號(hào)及微信交流群

Access培訓(xùn)群:792054000         Excel免費(fèi)交流群群:686050929          Outlook交流群:221378704    

Word交流群:218156588             PPT交流群:324131555

微信交流群(請(qǐng)用微信掃碼)

        

判斷Excel工作簿文件是否被打開

2019-11-18 09:05:00
zstmtony
原創(chuàng)
18725

工作場(chǎng)景中,可能有時(shí)處理數(shù)據(jù)之前,可能需要使用VBA先判斷待處理的Excel文件是否已經(jīng)被別人打開,如果打開,需要提示先關(guān)閉或代碼強(qiáng)制關(guān)閉。

那如何判斷工作簿已經(jīng)被打開呢,有以下一些方法


方法1:



Const strFileName As String = "你的文件.xls"
Sub CheckFileIsOpen()
Dim xApp As Application
Set xApp = CreateObject("Excel.Application")
xApp.DisplayAlerts = False
On Error GoTo Error_Handler
xApp.Workbooks.Open Filename:=ThisWorkbook.Path & "" & strFileName, notify:=False, ReadOnly:=False
If xApp.ActiveWorkbook.ReadOnly = True Then
    MsgBox "文件已經(jīng)被打開!"
Else
    MsgBox "文件未被打開!"
End If
GoTo Exit_Handler
Error_Handler:
    MsgBox "File is not exist"
Exit_Handler:
    xApp.Quit
End Sub


方法2:


        Dim wb As Workbook
        Set wb = GetObject("G:\測(cè)試工作簿.xlsx")
'        If wb.IsInplace = False Then
        If wb.ReadOnly = True Then
           MsgBox "指定的工作簿已經(jīng)被打開了"
           wb.Close
           Set wb = Nothing
           Exit Sub
        Else
            wb.Close
            Set wb = Nothing
        End If


方法3:


Sub 判斷文件是否已經(jīng)打開()
    Dim x As Integer
    For x = 1 To Windows.Count
        If Windows(x).Caption = "test.xls" Then
            MsgBox "test文件已經(jīng)打開了"
            Exit Sub
        Else
            MsgBox "test文件沒有被打開!"
        End If
    Next
End Sub


方法4:



判斷一個(gè)指定的工作簿文件是否打開
先將下面的VBA代碼放到一個(gè)標(biāo)準(zhǔn)模塊中,然后在需要的地方進(jìn)行調(diào)用。
'如果目標(biāo)工作簿已打開則返回TRUE,否則返回FALSE
Function IsWkLoaded(strWbName As String) As Boolean
 
 Dim i As Long

 For i = Workbooks.Count To 1 Step -1
  If Workbooks(i).Name = strWbName Then
    Exit For
  End If
 Next
 '如果工作簿未找到
 If i = 0 Then
   IsWkLoaded = False
 Else
   IsWkLoaded = True
 End If
End Function

調(diào)用示例如下,將“Book2.xls”換成指定的工作簿名稱:

Sub 調(diào)用()
If IsWkLoaded("test.xls") Then
MsgBox "指定的工作簿已打開"
Else
MsgBox "指定的工作簿沒有打開"
End If
End Sub
分享
文章分類
聯(lián)系我們
聯(lián)系人: 王先生
Email: 18449932@qq.com
QQ: 18449932
微博: officecn01
移動(dòng)訪問