macro ile audit trail

Katılım
28 Nisan 2005
Mesajlar
252
Excel Vers. ve Dili
Excel 2010 Türkçe
Merhaba Arkadaşlar

Bu günlerde excelde hazırladığım bir hesaplama tablosunun audit trail kaydı tutmasını istiyorum. Bunu macro ile veya formulle yapabilmemiz mümkün mü? Daha önce böyle bir işle uğraşanınız varmı?
Audit Trail: Hesaplama tablosunda yapılan değişikliklerin tarih bazında kayddilmesi.

Yardımcı olursanız sevinirim. :dua: :dua: :dua:
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Merhaba;

Sadece dosyayı en son kim kaydetmiş, hangi tarihte kaydetmiş gibi bilgilerin tutulduğu bir log yeterli olur mu ?
 

htsumer

Altın Üye
Altın Üye
Katılım
7 Eylül 2004
Mesajlar
946
Excel Vers. ve Dili
Excel-2003
Altın Üyelik Bitiş Tarihi
16.08.2026
Sayın Raider,
Gerçi soruyu soran arkadaş Sayın algil ama,bende ikide bir F5'leyip duruyorum.
Yıllık izine çıkacağımdan,maaş işlemlerine ait çalışmamda bu tür bir kod banada faydalı olacak.
Log benzeri fakat her satır veya hücrede yapılan tüm değişiklikler.
Bunu
Araçlar-->Çalışma kitabını Paylaştır - Değişiklikleri İzle seçeneğini işaretliyerek yapıyordum ama,bu yöntemide yani kod olarak öğrenmezsem olmaz.:mrgreen:
Mesai arkadaşlarıma Güvensizlik değil,kendi işimi hep kendim takip ederim.Yapılan değişiklikleri görmem gerek..
Bekliyelim bari..
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Evet ama, benim demek istediğim her hücrede ne olmuş, kim ne yapmış, ne zaman yapmış gibisinden değil de .... sadece basit olarak; kim ve ne zaman dosyayı kaydetmiş vb ... basit bir log tutulması ile ilgiliydi.

Onu da, workboook_save yordamının içinde kullanıcı adını bulup, bir text dosyasına o ismi ve o anki saatin yazdırılacağı bir kod parçası olarak düşünmüştüm.

Yoksa öyle teferruatlı bir şey değil ... :mrgreen:
 
Katılım
8 Haziran 2005
Mesajlar
114
Sayın Algil anladığım kadarı ile (umarım doğru anlamışımdır) kodlarınızı aşağı aktarıyorum.Veri Tabanı olarak şimdilik Excel çalışma kitabınızı kullandım.
Bu özelliklerin Hangi sayfada tutulmasını istiyorsanız o sayfanın adını adreslerin önüne eklemeniz yeterilidir.
Sheets("Adim").[A1] gibi...

Kod:
Sub Dosya_Ozellikler()
  [A1] = "Last save time"
  [B1] = "Creation date"
  [C1] = "Author"
  [D1] = "Last Author"
  Columns("A:B").NumberFormat = "dd mm yyyy hh:mm"
  With [A65536].End(3)
    .Offset(1, 0) = ActiveWorkbook.BuiltinDocumentProperties("Last save time")
    .Offset(1, 1) = ActiveWorkbook.BuiltinDocumentProperties("Creation date")
    .Offset(1, 2) = ActiveWorkbook.BuiltinDocumentProperties("Author")
    .Offset(1, 3) = ActiveWorkbook.BuiltinDocumentProperties("Last Author")
  End With
End Sub

Sub Auto_Open()
  Dosya_Ozellikler
End Sub
 

htsumer

Altın Üye
Altın Üye
Katılım
7 Eylül 2004
Mesajlar
946
Excel Vers. ve Dili
Excel-2003
Altın Üyelik Bitiş Tarihi
16.08.2026
Sayın Raider,
Teşekkür ederim.
Yoksa öyle teferruatlı bir şey değil ...
Ok..
Kolay Gelsin.

Sayın VisualBasic,
Yazınızı sonradan gördüm.Pardon
 
Katılım
28 Nisan 2005
Mesajlar
252
Excel Vers. ve Dili
Excel 2010 Türkçe
Ã?ncelikle bu formu keşfettiğim için çok mutluyum. Çünkü macroda çok çok yeniyim ve buradaki arkadaşlar gerçekten konularla çok ilgili. Herkes elinden gelenin en iyisini yapıyor. İnşallah ilerde bizde bu faydalı bilgilerden yaralanıp bir şeyler öğrenirsek paylaşmaktan çok mutluluk duyacağım. İlgilenen arkadaşlar çok çok teşekkürler.

VisualBasic' Alıntı:
Sayın Algil anladığım kadarı ile (umarım doğru anlamışımdır) kodlarınızı aşağı aktarıyorum.Veri Tabanı olarak şimdilik Excel çalışma kitabınızı kullandım.
VisualBasic arkadaşım tam istediğim gibi olmuş elinize sağlık. Biraz fazla oluyom ama dosyayı kaydettiğimiz esnada bu makro kendiliğinden çalışabilir mi?
 
Katılım
8 Haziran 2005
Mesajlar
114
algil' Alıntı:
Ã?ncelikle bu formu keşfettiğim için çok mutluyum. Çünkü macroda çok çok yeniyim ve buradaki arkadaşlar gerçekten konularla çok ilgili. Herkes elinden gelenin en iyisini yapıyor. İnşallah ilerde bizde bu faydalı bilgilerden yaralanıp bir şeyler öğrenirsek paylaşmaktan çok mutluluk duyacağım. İlgilenen arkadaşlar çok çok teşekkürler.

VisualBasic' Alıntı:
Sayın Algil anladığım kadarı ile (umarım doğru anlamışımdır) kodlarınızı aşağı aktarıyorum.Veri Tabanı olarak şimdilik Excel çalışma kitabınızı kullandım.
VisualBasic arkadaşım tam istediğim gibi olmuş elinize sağlık. Biraz fazla oluyom ama dosyayı kaydettiğimiz esnada bu makro kendiliğinden çalışabilir mi?
Rica ederim ne demek.

ThisWorkbook kısmına yazınız.

Kod:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
   [A1] = "Last save time"
  [B1] = "Creation date"
  [C1] = "Author"
  [D1] = "Last Author"
  Columns("A:B").NumberFormat = "dd mm yyyy hh:mm"
  On Error Resume Next
  With [A65536].End(3)
    .Offset(1, 0) = ActiveWorkbook.BuiltinDocumentProperties("Last save time")
    .Offset(1, 1) = ActiveWorkbook.BuiltinDocumentProperties("Creation date")
    .Offset(1, 2) = ActiveWorkbook.BuiltinDocumentProperties("Author")
    .Offset(1, 3) = ActiveWorkbook.BuiltinDocumentProperties("Last Author")
  End With
End Sub

Bu faydalı bilgilerden yaralanıp bir şeyler öğrenirsek paylaşmaktan çok mutluluk duyacağım demişsiniz.

Yalnız belirtmek isterim ki, ben bu forumdan bir şeyler öğrenerek bu günüme gelmedim, bu yönüyle yanlış anlaşılmak istemem. Sadece bilgilerimi paylaşmak için buradayım. VBA Çalışmalarımda farklı bir yol izlemişimidir.
 
Katılım
28 Nisan 2005
Mesajlar
252
Excel Vers. ve Dili
Excel 2010 Türkçe
VisualBasic' Alıntı:
Kod:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
   [A1] = "Last save time"
  [B1] = "Creation date"
  [C1] = "Author"
  [D1] = "Last Author"
  Columns("A:B").NumberFormat = "dd mm yyyy hh:mm"
  On Error Resume Next
  With [A65536].End(3)
    .Offset(1, 0) = ActiveWorkbook.BuiltinDocumentProperties("Last save time")
    .Offset(1, 1) = ActiveWorkbook.BuiltinDocumentProperties("Creation date")
    .Offset(1, 2) = ActiveWorkbook.BuiltinDocumentProperties("Author")
    .Offset(1, 3) = ActiveWorkbook.BuiltinDocumentProperties("Last Author")
  End With
End Sub
Merhaba yukardaki kod istediğimi yapıyor. Yalnız ben buna birde "Comment" bölümü eklemek istiyorum. Çünkü yapılan değişikliğin nedeninide kaydetmem gerekiyor. Yani ben "save" dediğim zaman bana bir mesaj box ile nedenini sorup bunu [E1] 'e yazmasını istiyorum.
Ben bu çalışmada protect kullanacağımdan macrolarıda protect'lemem gerekiyor. Yaptığım aramalarda buna benzer bir örnek göremedim. bunun içinde yardımcı olursanız sevinirim.
 
Katılım
8 Haziran 2005
Mesajlar
114
Kod:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  [A1] = "Last save time"
  [B1] = "Creation date"
  [C1] = "Author"
  [D1] = "Last Author"
  [E1] = "Nedeni"
  neden = InputBox("Değişiklik Sebebi", "Suzunkopru", "Değişikliğin Nedeni Nedir?")
  Columns("A:B").NumberFormat = "dd mm yyyy hh:mm"
  On Error Resume Next
  With [A65536].End(3)
    .Offset(1, 0) = ActiveWorkbook.BuiltinDocumentProperties("Last save time")
    .Offset(1, 1) = ActiveWorkbook.BuiltinDocumentProperties("Creation date")
    .Offset(1, 2) = ActiveWorkbook.BuiltinDocumentProperties("Author")
    .Offset(1, 3) = ActiveWorkbook.BuiltinDocumentProperties("Last Author")
    .Offset(1, 4) = neden
  End With
End Sub
Açıklama derken Comment demek istiyorsanız kodlar farklıdır.

VBA şifrelemek için:
VBA menüsünden; Tools - VBA project properties - Protection alanı şifreleme içindir.
 
Katılım
28 Nisan 2005
Mesajlar
252
Excel Vers. ve Dili
Excel 2010 Türkçe
Merhaba VisialBasic arkadaşım kodu yazdım çalıştırdım ve ona protect satırıda ilave ettim. makro çalıştığı zaman aktif sheet teki protecti kaldıryor ve işlemini yapıp protectliyor. Bu şekilde çok güzel çalışıyor. Kullanmaya başlayınca insan bazı olumsuzlukları görüyor. Bunda ben makroya bir özellik daha eklemek istiyorum. Buda inputbox açıldığında Cancel tıklandığında veya açıklama bölümüne bir şey yazılmadığı zaman işlen tekrar

neden = InputBox("Değişiklik Sebebi", "Suzunkopru", "Değişikliğin Nedeni Nedir?")

satırına dönsün.
Teşekkürler :? :?
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Sn. VisualBasic' nin affına sığınarak .... (çeşitli alternatifler olabilir tabii..)

Kod:
Do While neden = Empty
    neden = InputBox("Değişiklik Sebebi", "Suzunkopru", "")
Loop
 
Katılım
8 Haziran 2005
Mesajlar
114
Raider' Alıntı:
Sn. VisualBasic' nin affına sığınarak
Sayın Raider ilginize çok teşekkür ediyorum, ancak affına sığınılacak bir kişi olarak görülmek beni üzer, kısaca (şahsım adına söylüyorum) biz kim affına sığınılmak kim?
 
Katılım
28 Nisan 2005
Mesajlar
252
Excel Vers. ve Dili
Excel 2010 Türkçe
Merhaba Raider

Kod çok güzel oldu ve artık süper çalışıyor. (Hazırladığım bu hesaplama tablosunun valıdasyonunu da yapacağız. onun içingüvenlik çok önemli. Kodun son hali aşağıdadır. Bütün arkadaşların tavsiyelerini bekliyorum.

Private Sub Buton1_Click()
Sheets(1).Unprotect "1234ab"
[A1] = "Last save&print date"
[B1] = "Creation date"
[C1] = "Author"
[D1] = "Last Author"
[E1] = "Comment"
Do While neden = Empty
neden = InputBox("Değişiklik Sebebi", "Comment", "")
Loop
Columns("A:B").NumberFormat = "dd mm yyyy hh:mm:ss"
On Error Resume Next
With [A65536].End(3)
.Offset(1, 0) = Now
.Offset(1, 1) = ActiveWorkbook.BuiltinDocumentProperties("Creation date")
.Offset(1, 2) = ActiveWorkbook.BuiltinDocumentProperties("Author")
.Offset(1, 3) = ActiveWorkbook.BuiltinDocumentProperties("Last Author")
.Offset(1, 4) = neden
End With
Sheets(1).Protect "1234ab"
End Sub

Yardımlarınız için teşekkürler. :hihoho: :hihoho:
 
Üst