Soru Klasör İçerisindeki Değişiklikleri .TXT Yazması,

gicimi

Altın Üye
Katılım
3 Şubat 2008
Mesajlar
593
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2024
Merhaba;

Herhangi bir klasörün içerisindeki Excel sayfasında işlem yapılması durumunda .txt uzantılı metin belgesi oluşturup yapılan değişiklikler yazılabilir mi_?
Klasör yeri "Desktop"
Örnek olarak:

Sayfa1 nin A4 Sutununda veri silindi.
Sayfa2 nin B12 Sütununda Yazı Tipi değiişti.
Sayfa3 nin B2 ile B11 sütununları Birleştirildi. v.b. gibi çalışma sayfasında yapılan değişikleri görebilir miyim.
 

gicimi

Altın Üye
Katılım
3 Şubat 2008
Mesajlar
593
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2024
Konu güncel yardımcı olabilir misiniz.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,334
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Sayfa1 nin A4 Sutununda veri silindi.
Sayfa2 nin B12 Sütununda Yazı Tipi değiişti.
Sayfa3 nin B2 ile B11 sütununları Birleştirildi. v.b. gibi çalışma sayfasında yapılan değişikleri görebilir miyim.
Bu istediklerinizden yalnız veri silindiğinde veya değiştiğinde tetiklenecek olay vardır.
 

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
@gicimi;

"Review" sekmesindeki "Track Changes" işinize yarar mı?

.
 
Katılım
8 Eylül 2008
Mesajlar
950
Excel Vers. ve Dili
2016 İngilizce
Haluk üstadım. söylediğiniz işlev çok güzel bu bilgi için çok teşekkür ederim. bilmediğim bir şeydi öğrenmiş oldum. ama sanırım paylaşılmış bir excel dosyasında aktif oluyor bu işlev. lokal pc de aktif değil.

Konuyu açan arkadaş ise log tutmak istiyor sanırım. hücre içerisinde yazı tipi değişme ve satır sütun genişliklerini değiştirmek dışında herhangi bir sheete girdiğin bir veriyi log tutarak bu log sayfasını kaydedebileceğin kod örneği aşağıdadır.

Öncelikle log tutan kodu Thisworkbook yani buçalışmakitabı vba düzeneği içerisine aşağıdaki kodları yapıştır. yalnız logun tutulacağı sheet adını log olarak değiştir.
Kod:
Dim eski

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name <> "log" Then
        Set sayfa = ThisWorkbook.Sheets("log")
        With sayfa
            satir = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
            .Cells(satir, 1) = Format(Now, "dd.mm.yyyy")
            .Cells(satir, 2) = Format(Now, "hh:mm")
            .Cells(satir, 3) = Sh.Name
            .Hyperlinks.Add .Cells(satir, 3), "", "=" & .Cells(satir, 3) & "!" & Target.Address(0, 0)
            .Cells(satir, 4) = Target.Address(0, 0)
            .Hyperlinks.Add .Cells(satir, 4), "", "=" & .Cells(satir, 3) & "!" & .Cells(satir, 4)
            .Cells(satir, 5) = eski
            .Cells(satir, 6) = Target.Text
            .Cells(satir, 7) = Environ("UserName")
            '.Cells(satir, 7) = Environ("ComputerName")
            '.Cells(satir, 7) = Environ("IP-Address")
        End With
        End If
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
eski = Target
End Sub
ikinci kod düzeneğinde bu log sayfasında 1. satırdaki otomatik bazı verilerin devamlı olması için bazı sabit veriler. değişiklik tarihi değişikliği yapan kişi gibi sütun sütun başlıkları biçimlendirilmiş şekilde otomatik yazdırıyor. burayı kendi kafana göre biçimlerle değiştirebilirsin. bu kodu ise log olarak değiştirdiğin sheete ait vba düzeneğine yapıştır.
Kod:
Private Sub Worksheet_Activate()
Range("B1:B65000").HorizontalAlignment = xlLeft
Range("g1:g65000").HorizontalAlignment = xlCenter
Range("A1:G1").Interior.Color = RGB(204, 229, 244)
Range("A1:G1").Font.Bold = True
Range("A1:G1").Font.Color = vbRed
Range("A1").Value = "Değişiklik Tarihi"
Range("b1").Value = "Değişiklik Saati"
Range("c1").Value = "Sheet Adı"
Range("d1").Value = "Hücre Adresi"
Range("e1").Value = "Eski Veri"
Range("f1").Value = "Yeni Veri"
Range("g1").Value = "Değişiklik Yapan Kullanıcı"
End Sub
3. kod düzeneğimiz ise bu log sayfasında yapılan değişiklikleri bir yere txt olarak kaydetsin. bunu ise bir modüle oluşturup oradaki vba düzeneğine yapıştırabilirsin ve hatta log sheetinde boş bir alanda bir butona atayabilirsin. bu butona basınca log sheetindeki veriler txt olarak belirlediğin klasöre kaydedebilirsin. burada kaydedeceğin yer ile alakalı kendi pc ne göre yolu yazabilirsin.

Kod:
Option Explicit
Sub txt()
Dim ts
ts = InputBox("Dosya Adı Girişi", "Dosya Adı Giriş")
If ts = "" Then Exit Sub
ActiveWorkbook.SaveAs Filename:=("C:\Users\pcyiaçtığınkullanıcıadıklasörü\Desktop\" & ts) & ".txt", FileFormat:= _
xlUnicodeText, CreateBackup:=False
End Sub
 

gicimi

Altın Üye
Katılım
3 Şubat 2008
Mesajlar
593
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2024
@u.L.a.s Bey bilgilendirme ve kodlar için teşekkür ederim.
 
Katılım
8 Eylül 2008
Mesajlar
950
Excel Vers. ve Dili
2016 İngilizce
Haluk bey'in affına sığınarak. Bahsettiği durum şu. Örneğin excel dosyasında Review menüsü altında (yani gözden geçir menüsü altında) Track Changes seçeneği var yani türkçesi değişiklikleri izle. buna tıklıyorsunuz. altında highlight changes var onu seçiyorsunuz. çıkan pencerede tik işaretiyle seçenekleri etkinleştirip when who where seçimlerini belirleyip ok liyorsun. sonrasında bu excelde bir hücrede yaptığın değişiklik aynı comment gibi hücre kenarında gizli bir bilgi olarak duruyor. üstüne gelince hücrenin önceki veri neymiş sonraki veri ne olmuş ne zaman yapılmış. bunu sana popup gösteriyor. ama değişiklikleri gözle yani track changes olayını ortak bir alanda yani networkte ortak bir alanda birden çok kullanıcın eriştirği bir dosyada yapabiliyorsun.
 

gicimi

Altın Üye
Katılım
3 Şubat 2008
Mesajlar
593
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2024
@u.L.a.s çok teşekkür ederim. Ortak alanda mevcut dosyalarda kullanacağım. Kolaylıklar.
 
Üst