txt lerde veri değiştirme

Katılım
17 Ekim 2005
Mesajlar
38
Excel Vers. ve Dili
office2013
Altın Üyelik Bitiş Tarihi
13-04-2023
Merhaba,
Şöyle bir uygulama yapmam gerekiyor. Elimde yaklaşık 20 adet txt dosyası mevcut. Bu dosyaların içinde ingilizce yazılımış kelimeler var. ben her bir uygulamaya girip tek tek elimle bunların türkçelerini yazıyorum. Ancak txt dosyalarında birçok kez aynı kelimeler geçiyor. Yani aynı kelime 3-5 tane txt dosyasında geçebiliyor. Ben bir excelde kelimenin ingilizcesini ve karşısında da türkçesini yazsam ve makro ile txt dosyasında geçen tam kelimeleri otomatik olarak değiştirmem mümkün müdür? Tabii örnekte sadece 10-15 kelime var ancak sayı 5000 adet civarında.
 

Ekli dosyalar

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,391
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Kod:
Sub test()
    Dim kaynak As String, hedef As String, tum_metin, sat As Long

    kaynak = ThisWorkbook.Path & "\a1.txt"
    hedef = ThisWorkbook.Path & "\a1_demo.txt"
    
    tum_metin = CreateObject("scripting.filesystemobject").Opentextfile(kaynak).readall
    
    For sat = 1 To 21
        tum_metin = Replace(tum_metin, Cells(sat, "a"), _
            Cells(sat, "b")) [COLOR=DarkGreen]'BÜYÜK-küçük duyarlı ve hızlı.[/COLOR]
            
        [COLOR=DarkGreen]'tum_metin = Replace(tum_metin, Cells(sat, "a"), _
            Cells(sat, "b"), compare:=vbTextCompare) 'BÜYÜK-küçük duyarsız ve biraz yavaş.[/COLOR]
    Next
    
    Open hedef For Output As #1
        Print #1, tum_metin
    Close #1

End Sub
 
Katılım
17 Ekim 2005
Mesajlar
38
Excel Vers. ve Dili
office2013
Altın Üyelik Bitiş Tarihi
13-04-2023
Bu işlem güzel olmuş. elinize sağlık
 
Katılım
7 Ağustos 2011
Mesajlar
319
Excel Vers. ve Dili
2003-2010 Türkçe
Altın Üyelik Bitiş Tarihi
25/05/2022
Kod:
Sub test()
    Dim kaynak As String, hedef As String, tum_metin, sat As Long

    kaynak = ThisWorkbook.Path & "\a1.txt"
    hedef = ThisWorkbook.Path & "\a1_demo.txt"
    
    tum_metin = CreateObject("scripting.filesystemobject").Opentextfile(kaynak).readall
    
    For sat = 1 To 21
        tum_metin = Replace(tum_metin, Cells(sat, "a"), _
            Cells(sat, "b")) [COLOR=DarkGreen]'BÜYÜK-küçük duyarlı ve hızlı.[/COLOR]
            
        [COLOR=DarkGreen]'tum_metin = Replace(tum_metin, Cells(sat, "a"), _
            Cells(sat, "b"), compare:=vbTextCompare) 'BÜYÜK-küçük duyarsız ve biraz yavaş.[/COLOR]
    Next
    
    Open hedef For Output As #1
        Print #1, tum_metin
    Close #1

End Sub
Kaynak ve hedef dosya birden fazla olursa dosya yolu nasıl yazılabilir.
 
Katılım
7 Ağustos 2011
Mesajlar
319
Excel Vers. ve Dili
2003-2010 Türkçe
Altın Üyelik Bitiş Tarihi
25/05/2022
Hüseyin Hocam,
\a1.txt , \b1.txt , \k1.txt , \ali.txt gibi kaynak dosyalar olsun,
\a1_demo.txt , \b1_demo.txt , \k1_demo.txt , \ali_demo.txt gibi hedef dosyalar olursa yolu nasıl belirtebiliriz. Aralara And koyarak değişik şekilde denedim olmadı.
 

Emir Hüseyin Çoban

Destek Ekibi
Destek Ekibi
Katılım
11 Ağustos 2008
Mesajlar
5,893
Excel Vers. ve Dili
Office 2013 Tr - Win10 x64
. . .

Dosyanız ektedir.

Kaynak dosya yollarını A sütununa girin.

Kaynak dosyanız çok fazla ise onlarında otomatik listelenmesi için kod yazabiliriz.

. . .
 

Ekli dosyalar

Katılım
7 Ağustos 2011
Mesajlar
319
Excel Vers. ve Dili
2003-2010 Türkçe
Altın Üyelik Bitiş Tarihi
25/05/2022
Hüseyin Hocam,
Yardımlarınız için çok teşekkür ederim.
Hedef dosya ile uğraşmadan direk kaynak dosya üzerinde değişiklik yapmak için aşağıdaki değişiklikleri yaptım normalde kod gayet güzel çalıştı.Sizce kodda başka değişiklik yapmak gerekir miydi?

Sub test()
Dim kaynak As String, hedef As String, tum_metin, sat As Long


Dim Y As Worksheet: Set Y = Sheets("YOL")
Dim V As Worksheet: Set V = Sheets("VERİ")

For i = 2 To Y.Cells(Rows.Count, "A").End(3).Row

kaynak = Y.Cells(i, "A")
uzunluk = Len(kaynak) - 4
hedef = Left(kaynak, uzunluk) & "_demo.txt" 'bu satırı kaldırdım.

tum_metin = CreateObject("scripting.filesystemobject").Opentextfile(kaynak).readall

For sat = 1 To V.Cells(Rows.Count, "A").End(3).Row
tum_metin = Replace(tum_metin, V.Cells(sat, "a"), _
V.Cells(sat, "b")) 'BÜYÜK-küçük duyarlı ve hızlı.
Next

Open hedef For Output As #1 'hedef kelimesini kaynak yaptım.
Print #1, tum_metin
Close #1

Next i

End Sub
 

Emir Hüseyin Çoban

Destek Ekibi
Destek Ekibi
Katılım
11 Ağustos 2008
Mesajlar
5,893
Excel Vers. ve Dili
Office 2013 Tr - Win10 x64
. . .

Bu tarz otomatik değiştirme işlemlerinde asıl verinin yedeğinin olması iyidir.

. . .
 
Üst