[excel] पता लगाएं कि एक्सेल कार्यपुस्तिका पहले से ही खुली है


Answers

मेरे अनुप्रयोगों के लिए, मैं आमतौर पर यह निर्धारित करने के बजाय कि यह खुला है या नहीं, बल्कि कार्यपुस्तिका के साथ काम करना चाहता हूं। उस मामले के लिए, मैं बूलियन फ़ंक्शन को छोड़ना पसंद करता हूं और केवल कार्यपुस्तिका वापस करता हूं।

Sub test()

    Dim wb As Workbook

    Set wb = GetWorkbook("C:\Users\dick\Dropbox\Excel\Hoops.xls")

    If Not wb Is Nothing Then
        Debug.Print wb.Name
    End If

End Sub

Public Function GetWorkbook(ByVal sFullName As String) As Workbook

    Dim sFile As String
    Dim wbReturn As Workbook

    sFile = Dir(sFullName)

    On Error Resume Next
        Set wbReturn = Workbooks(sFile)

        If wbReturn Is Nothing Then
            Set wbReturn = Workbooks.Open(sFullName)
        End If
    On Error GoTo 0

    Set GetWorkbook = wbReturn

End Function
Question

वीबीए में, मैंने प्रोग्रामिंग के "myWork.XL" नामक एक एमएस एक्सेल फ़ाइल खोली।

अब मुझे एक कोड चाहिए जो मुझे अपनी स्थिति के बारे में बता सकता है - चाहे वह खुला है या नहीं। क्या IsWorkBookOpened("myWork.XL) तरह कुछ है?




यह समझने में थोड़ा आसान है:

Dim location As String
Dim wbk As Workbook

location = "c:\excel.xls"

Set wbk = Workbooks.Open(location)

'Check to see if file is already open
If wbk.ReadOnly Then
  ActiveWorkbook.Close
    MsgBox "Cannot update the excelsheet, someone currently using file. Please try again later."
    Exit Sub
End If



मैं इसके साथ जाऊंगा:

Public Function FileInUse(sFileName) As Boolean
    On Error Resume Next
    Open sFileName For Binary Access Read Lock Read As #1
    Close #1
    FileInUse = IIf(Err.Number > 0, True, False)
    On Error GoTo 0
End Function

sfileName के रूप में आपको फ़ाइल के लिए सीधे पथ प्रदान करना होगा उदाहरण के लिए:

Sub Test_Sub()
    myFilePath = "C:\Users\UserName\Desktop\example.xlsx"
    If FileInUse(myFilePath) Then
        MsgBox "File is Opened"
    Else
        MsgBox "File is Closed"
    End If
End Sub



Links