Dosyanın Açılma Sayısını ve Kullanıcı Adını Kaydet - Microsoft Excel


Öncelikle kayıt yapılacak sayfanın varlığı kontrol ediliyor. Yoksa oluşturuluyor ve dosya her açıldığında sayacı ve açan kullanıcı bilgisini güncelleyerek mesaj olarak bildiriyor. Bunları yaptıktan hemen sonra da çalışma kitabını kaydediyor.

Kod


Option Explicit

Private Sub Workbook_Open()
    SayfaKontrol
    
    Dim ws As Worksheet
    
    Set ws = Worksheets("calismaKitabiData")
    ws.Range("A1").Value = ws.Range("A1").Value + 1
    ws.Range("B1") = Application.UserName
    
    MsgBox "Dosyanın Açılma Sayısı: " & ws.Range("A1").Value & vbCrLf & _
    "En Son Açan Kullanıcı: " & ws.Range("B1"), , "BİLGİ"
    ThisWorkbook.Save
End Sub

'--------------------------------------------------
'Kayıtları tutacağımız sayfanın olup
'olmadığını kontrol etmeye yarayan makro.
'--------------------------------------------------
Private Sub SayfaKontrol()
    Dim sayfa_adi As String
    Dim syf       As Worksheet
    Dim sayac     As Byte
    
    sayfa_adi = "calismaKitabiData"
    
    For Each syf In ThisWorkbook.Sheets
        If syf.Name = sayfa_adi Then
            Exit Sub
        Else
            sayac = sayac + 1
        End If
    Next
    
    If sayac > 0 Then
        Sheets.Add
        ActiveSheet.Name = sayfa_adi
        ActiveSheet.Visible = False
    End If
End Sub

Kod (Açıklamalı)


Option Explicit

Private Sub Workbook_Open()

    '--------------------------------------------------
    'İlk önce sayfa var mı yok mu
    'kontrol et, yoksa oluştur bir tane.
    '--------------------------------------------------
    SayfaKontrol
    
    '--------------------------------------------------
    'Bizim calismaKitabiData sayfasını
    'değişkene atayarak kodun gereksiz
    'yere uzamasını önlemek için Worksheet
    'tipinde değişken oluşturdum.
    '--------------------------------------------------
    Dim ws As Worksheet
    
    '--------------------------------------------------
    'ws değişkenimize sayfamızı atadık.
    'Böylelikle her seferinde
    'Worksheets("calismaKitabiData")
    'yazmak yerine ws yazıp geçeceğim.
    '--------------------------------------------------
    Set ws = Worksheets("calismaKitabiData")
    
    '--------------------------------------------------
    'Sayaç güncellemesini yap.
    '--------------------------------------------------
    ws.Range("A1").Value = ws.Range("A1").Value + 1
    
    '--------------------------------------------------
    'Kullanıcı güncellemesini yap.
    '--------------------------------------------------
    ws.Range("B1") = Application.UserName
    
    '--------------------------------------------------
    'Kitap açıldığında güncellenmiş bilgileri
    'kullanıcıya mesaj olarak göster.
    '--------------------------------------------------
    MsgBox "Dosyanın Açılma Sayısı: " & ws.Range("A1").Value & vbCrLf & _
    "En Son Açan Kullanıcı: " & ws.Range("B1"), , "BİLGİ"
    
    '--------------------------------------------------
    'Bu işlemlerin hemen ardından kitabı
    'kaydet, sonra hata olmasın.
    '--------------------------------------------------
    ThisWorkbook.Save
End Sub

'--------------------------------------------------
'Kayıtları tutacağımız sayfanın olup
'olmadığını kontrol etmeye yarayan makro.
'--------------------------------------------------
Private Sub SayfaKontrol()

    '--------------------------------------------------
    'Kayıt yapacağımız sayfanın ismini
    'belirledikten sonra bu değişkene atayacağız.
    '--------------------------------------------------
    Dim sayfa_adi As String
    
    '--------------------------------------------------
    'For Each döngüsü için kullanacağız bu değişkeni.
    'Sayfaları kontrol edeceğiz tek tek.
    '--------------------------------------------------
    Dim syf       As Worksheet
    
    '--------------------------------------------------
    'Sayfanın var olup olmadığını bu
    'sayaç değişkenimizle öğreneceğiz.
    '--------------------------------------------------
    Dim sayac     As Byte
    
    '--------------------------------------------------
    'Sayfa adını belirledik.
    '--------------------------------------------------
    sayfa_adi = "calismaKitabiData"
    
    '--------------------------------------------------
    'Değişkene başlangıç değeri atadık.
    '--------------------------------------------------
    sayac = 0
    
    '--------------------------------------------------
    'Şimdi mevcut sayfaları tek tek kontrol edeceğiz.
    '--------------------------------------------------
    For Each syf In ThisWorkbook.Sheets
    
    '--------------------------------------------------
    'Sayfamız varsa çalışacak şart.
    '--------------------------------------------------
    If syf.Name = sayfa_adi Then
    
            '--------------------------------------------------
            'Sayfamız varsa işlem yapmaya gerek yok demektir,
            'kodun çalışmasına gerek kalmadığından Sub
            'yordamdan çıkış yapabiliriz.
            '--------------------------------------------------
            Exit Sub
        
        '--------------------------------------------------
        'Eğer sayfa yoksa bu kısım çalışacak.
        '--------------------------------------------------
        Else
        
            '--------------------------------------------------
            'Sayacı 1 artırdık. Eğer Else kısmı çalışmamış
            'olsaydı sayac sıfır olarak kalacaktı. Sayacın
            'artması istediğimiz isimde sayfanın mevcut
            'olmadığının bir göstergesi.
            '--------------------------------------------------
            sayac = sayac + 1
        End If
    Next
    
    
    '--------------------------------------------------
    'Madem sayac değişkeni sayfanın olmadığını
    'anlamamıza yardımcı oldu, o halde sayfa
    'oluşturalım.
    '--------------------------------------------------
    If sayac > 0 Then
    
        '--------------------------------------------------
        'Sayfa oluşturma kodu.
        '--------------------------------------------------
        Sheets.Add
        
        '--------------------------------------------------
        'Sayfamıza yukarıda belirlediğimiz
        'ismi verdik. Tabii dinamik oldu
        'değişken olarak verince.
        '--------------------------------------------------
        ActiveSheet.Name = sayfa_adi
        
        '--------------------------------------------------
        'Sayfanın görünür olmasına gerek
        'duymadığımdan dolayı gizledim.
        '--------------------------------------------------
        ActiveSheet.Visible = False
    End If
End Sub

Etiketler
microsoft excel açıklamalı içerik microsoft excel vba