Server Kullanıcı İsmi bulma

Katılım
14 Kasım 2006
Mesajlar
197
Excel Vers. ve Dili
Excel 2003 TR
Sub auto_Open()
If ThisWorkbook.ReadOnly = True Then
MsgBox "Dosya Başka kullanıcı tarafından kullanılıyor." & vbLf & _
"Şimdi Kapatılacak." & _
vbLf & "Daha sonra yeniden deneyin..!!", vbOKOnly + vbInformation, "DOSYA KULLANIMDA"
ThisWorkbook.Close False
End If
End Sub


Bu kodlar, program başka bir bilgisayarda açık ise dosyanın ikinci kez açılmasını engelliyor. Bana programın hangi kullanıcıda veya bilgisayarda açık olduğu da gerekli.

Bu konuda yardımlarınızı bekliyorum.
 
Katılım
14 Kasım 2006
Mesajlar
197
Excel Vers. ve Dili
Excel 2003 TR
Konunun üste taşınması için atıyorum.

Lütfen Yardım
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,759
Excel Vers. ve Dili
Excel 2019 Türkçe
Kod:
Sub auto_Open()
    If ThisWorkbook.ReadOnly = True Then
    MsgBox "Dosya " & ThisWorkbook.BuiltinDocumentProperties.Item("Last Author") & " kullanıcısı tarafından kullanılıyor." & vbLf & _
    "Şimdi Kapatılacak." & _
    vbLf & "Daha sonra yeniden deneyin..!!", vbOKOnly + vbInformation, "DOSYA KULLANIMDA"
    ThisWorkbook.Close False
    End If
End Sub
şeklinde dener misiniz ?
 
Katılım
14 Kasım 2006
Mesajlar
197
Excel Vers. ve Dili
Excel 2003 TR
Kod:
Sub auto_Open()
    If ThisWorkbook.ReadOnly = True Then
    MsgBox "Dosya " & ThisWorkbook.BuiltinDocumentProperties.Item("Last Author") & " kullanıcısı tarafından kullanılıyor." & vbLf & _
    "Şimdi Kapatılacak." & _
    vbLf & "Daha sonra yeniden deneyin..!!", vbOKOnly + vbInformation, "DOSYA KULLANIMDA"
    ThisWorkbook.Close False
    End If
End Sub
şeklinde dener misiniz ?
sayın hamitcan denedim. Fakat en son kaydedip kapatan kullanıcının ismi geliyor. O an kullanan kullanıcının ismi gelmiyor.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,759
Excel Vers. ve Dili
Excel 2019 Türkçe
Evet haklısınız. Konuyu araştırıyorum.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,759
Excel Vers. ve Dili
Excel 2019 Türkçe
Bir örnek buldum ama...
Kod:
Who Has the Read Only File   (#reserved)

    Macro supplied by Harald Staff, Programming, 2002-10-14.

    Sub test()
    Dim wbk As Workbook
    Set wbk = Workbooks.Open("C:\temp\book1.xls")
    If wbk.ReadOnly Then
        MsgBox "Write reserved by " & _
            wbk.WriteReservedBy
    End If
    End Sub
 
Katılım
14 Kasım 2006
Mesajlar
197
Excel Vers. ve Dili
Excel 2003 TR
sayın hamitcan denedim. Benim için araştırma yapmanıza ayrıca teşekkür ederim. Fakat yine en son kaydedip kapatan kullanıcının ismi geliyor. O an kullanan kullanıcının ismi gelmiyor.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,397
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Merhaba,

Hazır bir property olup olmadığını bilemiyorum ancak, dosyanın açılışında gizli bir sayfaya dosya açıldığında oturum adı veya pc adı yazdırılabilir. Açan kişi bu yolla bulunabilir.
 
Katılım
22 Mart 2005
Mesajlar
847
Excel Vers. ve Dili
Excel-2003 TR.
Altın Üyelik Bitiş Tarihi
29-06-2023
Merhaba; Bir zamanlar lazım olmuştu arşivimde buldum. Belki işinize yarar düşüncesiyle....

Bir excel sayfasını bir kişi kapattığı zaman ağdaki bir bilgisayara mesaj göndertebilirmiyiz?
Yani kişi herhangi bir excel sayfasında çalışıyor ve exceli kapatıyor, kapattığı anda ağda bir bilgisayara dosya kapandı mesajı veriyor

Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Private Sub Workbook_Open()
Dim c, u As Long
Dim comp As String * 255
Dim user As String * 255
c = GetComputerName(comp, 255): u = GetUserName(user, 255): DoEvents
blg = "": kull = ""
For i = 1 To 255
If Asc(Mid(comp, i, 1)) <> 0 Then blg = blg & Mid(comp, i, 1)
If Asc(Mid(user, i, 1)) <> 0 Then kull = kull & Mid(user, i, 1)
Next i
msg = blg & " bilgisayarında " & kull & " kullanıcısı '" & Application.ActiveWorkbook.Name & "' dosyasını açtı.."
Call Shell("net send benimbilgisayarım " & msg)
End Sub


benimbilgisayarım yazan yere kendi bilgisayarının ağ üzerindeki ismini yazacaksın.. kapanışı görmek için ise bunun benzerini workbook'un kapanış event' ına yazman gerekiyor
 
Katılım
14 Kasım 2006
Mesajlar
197
Excel Vers. ve Dili
Excel 2003 TR
Yaptığınız bu öneriyi şöyle değerlendirebilir miyiz?

Programı açmak isteyip açamayan (Salt okunur nedeniyle) kullanıcıyı bir yere kaydedip, dosya kapandığı vakit, bu kullanıcıya "açmak istediğiniz dosya şu an kullanılabilir" diye mesaj gönderebilir miyiz?
 
Katılım
22 Mart 2005
Mesajlar
847
Excel Vers. ve Dili
Excel-2003 TR.
Altın Üyelik Bitiş Tarihi
29-06-2023
Sanırım aşağıdaki kodlar sizin işinizi çözecek. (Alıntıdır.)

Excel dosyanız ile çalışan kullanıcıları takip için aşağıdaki kodları kullanabilirisiniz.
Kod:

'Dosya kapatıldığında çalışacak kod:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Mesaj = Application.UserName & " kullanıcısı dosyayı kapattı"
Dosya = ThisWorkbook.Name
Shell "C:\Windows\system32\net.exe send BILGISAYAR_ADI " & Dosya & " - " & Mesaj, vbHide
End Sub

'Dosya yazdırıldığında çalışacak kod:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Mesaj = Application.UserName & " kullanıcısı dosyayı yazdırıyor"
Dosya = ThisWorkbook.Name
Shell "C:\Windows\system32\net.exe send BILGISAYAR_ADI " & Dosya & " - " & Mesaj, vbHide
End Sub

'Dosya kaydedildiğinde çalışacak kod:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Mesaj = Application.UserName & " kullanıcısı dosyayı kaydetti"
Dosya = ThisWorkbook.Name
Shell "C:\Windows\system32\net.exe send BILGISAYAR_ADI " & Dosya & " - " & Mesaj, vbHide
End Sub

'Dosya açıldığında çalışacak kod:
Private Sub Workbook_Open()
Mesaj = Application.UserName & " kullanıcısı dosyayı açtı"
Dosya = ThisWorkbook.Name
Shell "C:\Windows\system32\net.exe send BILGISAYAR_ADI " & Dosya & " - " & Mesaj, vbHide
End Sub

'Dosyanın ilgili sayfasında değişiklik yapıldığında çalışacak kod:
Private Sub Worksheet_Change(ByVal Target As Range)
Mesaj = Application.UserName & " kullanıcısı dosyada değişiklik yaptı"
Dosya = ThisWorkbook.Name
Shell "C:\Windows\system32\net.exe send BILGISAYAR_ADI " & Dosya & " - " & Mesaj, vbHide
End Sub


* Kodlardaki BILGISAYAR_ADI , sizin bilgisayarınızın adı olacaktır.
* Yukarıdaki kodların işlevini yerine getirebilmesi için Messenger hizmetini destekleyen bir işletim sisteminizin (örn:Windows XP) olması ve bu hizmetin etkin olması gerekmektedir.
 
Katılım
14 Kasım 2006
Mesajlar
197
Excel Vers. ve Dili
Excel 2003 TR
Şu an server imde bir sıkıntı var. tam olarak deneyemiyorum. ama en kısa zamanda deneyip dönüş yapacağım.

Peki Programı açmak isteyip açamayan (Salt okunur nedeniyle) kullanıcıyı bir yere yazdırsak ve dosya kapandığı vakit, bu kullanıcıya "açmak istediğiniz dosya şu an kullanılabilir" diye mesaj gönderebilir miyiz?
 
Katılım
22 Mart 2005
Mesajlar
847
Excel Vers. ve Dili
Excel-2003 TR.
Altın Üyelik Bitiş Tarihi
29-06-2023
Olabilir...... Açıldı, kapandı, kaydedildi şeklinde mesajlar ile .txt dosyasına mesaj verdirilebilir.

Çok merakımdan soruyorum. İlk mesajınızda verdiğiniz salt okunur açılmasını engelleyen kodlara müdahale etme şansınız yokmu.
 
Üst