Ortak alandaki bir Excel dosyasının açık olup olmadığını kontrol etme ..

Katılım
29 Ocak 2024
Mesajlar
114
Excel Vers. ve Dili
Office 2016
Kıymetli Hocalarım merhabalar,

Ortak server altında bulunan ve erişim yetkisi olan herkesin açabileceği bir dosyanın açık olup olmadığını kontrol etmek için aşağıdaki kodu buldum ama bu kod sanırsam eğer dosya kendi bilgisayarımda açıksa doğru çalışıyor.

Benim istediğim dosyanın her hangi biri tarafından da açılmış olsa da bunu öğrenebilmek ....

destek ve yardımlarınız için şimdiden çok teşekkür ederim.

Kod:
Sub testIsOpen()
    Dim sFN     As String
    Dim bFlag   As Boolean
    myPath = "\\10.x.x.xx\nFolder\DB"
    sFN = myPath & "\FileName.xlsx"  
    bFlag = IsWkbOpen(sFN)
    Debug.Print bFlag
End Sub
Kod:
Public Function IsWkbOpen(ByVal sFileName As String) As Boolean
    Dim wkb         As Workbook
    Dim bReturn     As Boolean
    On Error GoTo EH   
    bReturn = True
    Set wkb = Workbooks(sFileName)
    IsWkbOpen = bReturn
    Exit Function
EH:
    bReturn = False
    Resume Next
End Function
iyi Çalışmalar dilerim.
 

RBozkurt

𐱅𐰇𐰼𐰚
Altın Üye
Katılım
10 Ocak 2018
Mesajlar
724
Excel Vers. ve Dili
Microsoft Office 2024
Google Sheets
Altın Üyelik Bitiş Tarihi
19-12-2026
Dosya her açıldığında ilgili dosyanın içine veya başka bir yere tarih saat vs. pc username şeklinde kayıt da yaptırabilirsiniz.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,459
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Böyle olabilir mi...

C++:
Function IsFileOpen(ByVal FilePath As String) As Boolean
    Dim FileNumber As Integer
    Dim ErrorNumber As Integer
    
    ' Bir dosya numarası al
    FileNumber = FreeFile
    
    On Error Resume Next
    ' Dosyayı sadece okuma modunda açmayı dene
    Open FilePath For Input Lock Read As #FileNumber
    ' Hata numarasını al
    ErrorNumber = Err.Number
    On Error GoTo 0
    
    Select Case ErrorNumber
        Case 0
            ' Hata yoksa dosya açık değil, dosyayı kapat
            Close #FileNumber
            IsFileOpen = False
        Case 70
            ' Hata 70: Dosya başka bir kullanıcı tarafından kilitlenmiş
            IsFileOpen = True
        Case Else
            ' Diğer hataları işleyebilirsiniz
            MsgBox "Beklenmeyen bir hata oluştu: " & ErrorNumber, vbExclamation
            IsFileOpen = False
    End Select
End Function

Sub TestIsFileOpen()
    Dim FilePath As String
    Dim Result As Boolean
    
    ' Kontrol edilecek dosyanın yolunu belirle
    FilePath = "\\AğYolu\DosyaAdı.xlsx"
    
    ' Fonksiyonu çağır ve sonucu kontrol et
    Result = IsFileOpen(FilePath)
    
    If Result Then
        MsgBox "Dosya açık!", vbInformation
    Else
        MsgBox "Dosya kapalı.", vbInformation
    End If
End Sub
 
Katılım
29 Ocak 2024
Mesajlar
114
Excel Vers. ve Dili
Office 2016
Böyle olabilir mi...

C++:
Function IsFileOpen(ByVal FilePath As String) As Boolean
    Dim FileNumber As Integer
    Dim ErrorNumber As Integer
   
    ' Bir dosya numarası al
    FileNumber = FreeFile
   
    On Error Resume Next
    ' Dosyayı sadece okuma modunda açmayı dene
    Open FilePath For Input Lock Read As #FileNumber
    ' Hata numarasını al
    ErrorNumber = Err.Number
    On Error GoTo 0
   
    Select Case ErrorNumber
        Case 0
            ' Hata yoksa dosya açık değil, dosyayı kapat
            Close #FileNumber
            IsFileOpen = False
        Case 70
            ' Hata 70: Dosya başka bir kullanıcı tarafından kilitlenmiş
            IsFileOpen = True
        Case Else
            ' Diğer hataları işleyebilirsiniz
            MsgBox "Beklenmeyen bir hata oluştu: " & ErrorNumber, vbExclamation
            IsFileOpen = False
    End Select
End Function

Sub TestIsFileOpen()
    Dim FilePath As String
    Dim Result As Boolean
   
    ' Kontrol edilecek dosyanın yolunu belirle
    FilePath = "\\AğYolu\DosyaAdı.xlsx"
   
    ' Fonksiyonu çağır ve sonucu kontrol et
    Result = IsFileOpen(FilePath)
   
    If Result Then
        MsgBox "Dosya açık!", vbInformation
    Else
        MsgBox "Dosya kapalı.", vbInformation
    End If
End Sub
Çok teşekkür ederim Hocam
iyi çalışmalar.
 
Üst