Çözüldü Word Makro ile bir dizi kelime aratıp bulma

Katılım
17 Ocak 2009
Mesajlar
13
Excel Vers. ve Dili
2016 Office ve Türkçe
bir "word" dosyam var. birde içinde alt alta sıralı şekilde türkçe kelimelerin olduğu "file.txt"dosyam var. bu dosyanın içindeki kelimeler türkçe karakterler içeriyor. örneğin; "olmadığı, yapılmadığı, bulunmadığı,..." vb. gibi. ihtiyacım ise word belgesinde file txt dosyası içindeki kelimeleri sırasıyla aratıp rengini kırmızı, puntosunu 16 ve bold yapmayı sağlayan makro yazabilir misiniz? şimdiden çok teşekkür ederim.
 

tugkan

Altın Üye
Katılım
6 Kasım 2004
Mesajlar
367
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
16-10-2025
Merhaba,
Dener misiniz?
Bu makro, file.txt dosyasındaki kelimeleri sırasıyla alarak Word belgesinde arayacak ve bulduğu kelimeleri belirtilen biçimde değiştirecek. Aşağıdaki makroyu Word VBA modülünde kullanabilirsiniz:

  1. Word’ü açın ve Alt + F11 tuşlarına basarak VBA editörünü açın.
  2. Ekle > Modül seçeneği ile yeni bir modül ekleyin.
  3. Aşağıdaki kodu bu modüle yapıştırın:
Kod:
Sub KelimeleriBulVeBicimlendir()
    Dim wordApp As Object
    Dim kelimeDosyasi As String
    Dim dosyaIcerigi As String
    Dim kelimeler() As String
    Dim i As Integer
    Dim arananKelime As String
    Dim bulunmaSonucu As Boolean
    
    ' file.txt dosyasının yolunu belirtin
    kelimeDosyasi = "C:\DosyaYolu\file.txt" ' Dosya yolunu düzenleyin
    
    ' file.txt dosyasını aç ve içeriği oku
    Open kelimeDosyasi For Input As #1
    dosyaIcerigi = Input(LOF(1), #1)
    Close #1
    
    ' Txt içindeki kelimeleri ayırarak bir diziye atıyoruz
    kelimeler = Split(dosyaIcerigi, vbCrLf)
    
    ' Her bir kelimeyi sırayla arayıp biçimlendirme
    For i = LBound(kelimeler) To UBound(kelimeler)
        arananKelime = kelimeler(i)
        
        ' Word belgesinde arama yap
        bulunmaSonucu = True
        Do While bulunmaSonucu
            With ActiveDocument.Content.Find
                .Text = arananKelime
                .MatchCase = False
                .MatchWholeWord = True
                .Replacement.Text = arananKelime
                .Replacement.Font.Color = wdColorRed
                .Replacement.Font.Size = 16
                .Replacement.Font.Bold = True
                .Execute Replace:=wdReplaceOne
                bulunmaSonucu = .Found
            End With
        Loop
    Next i
    
    MsgBox "Kelime arama ve biçimlendirme işlemi tamamlandı.", vbInformation
End Sub
Açıklamalar:
  • kelimeDosyasi değişkeni, file.txt dosyanızın yolunu belirtir. Buradaki dosya yolunu kendi dosyanızın yoluna göre güncelleyin.
  • kelimeler = Split(dosyaIcerigi, vbCrLf) satırı, file.txt içindeki kelimeleri satır sonlarına göre ayırır ve bir diziye aktarır.
  • Do While bulunmaSonucu döngüsü ile her bir kelime arandıktan sonra biçimlendirilir: kırmızı renk, 16 punto ve kalın olacak şekilde ayarlanır.
Bu kodu çalıştırdığınızda, file.txt içindeki her kelime sırasıyla Word belgesinde aranıp belirtilen biçimle düzenlenmiş olacaktır.
 
Katılım
17 Ocak 2009
Mesajlar
13
Excel Vers. ve Dili
2016 Office ve Türkçe
Merhaba,
Dener misiniz?
Bu makro, file.txt dosyasındaki kelimeleri sırasıyla alarak Word belgesinde arayacak ve bulduğu kelimeleri belirtilen biçimde değiştirecek. Aşağıdaki makroyu Word VBA modülünde kullanabilirsiniz:

  1. Word’ü açın ve Alt + F11 tuşlarına basarak VBA editörünü açın.
  2. Ekle > Modül seçeneği ile yeni bir modül ekleyin.
  3. Aşağıdaki kodu bu modüle yapıştırın:
Kod:
Sub KelimeleriBulVeBicimlendir()
    Dim wordApp As Object
    Dim kelimeDosyasi As String
    Dim dosyaIcerigi As String
    Dim kelimeler() As String
    Dim i As Integer
    Dim arananKelime As String
    Dim bulunmaSonucu As Boolean
  
    ' file.txt dosyasının yolunu belirtin
    kelimeDosyasi = "C:\DosyaYolu\file.txt" ' Dosya yolunu düzenleyin
  
    ' file.txt dosyasını aç ve içeriği oku
    Open kelimeDosyasi For Input As #1
    dosyaIcerigi = Input(LOF(1), #1)
    Close #1
  
    ' Txt içindeki kelimeleri ayırarak bir diziye atıyoruz
    kelimeler = Split(dosyaIcerigi, vbCrLf)
  
    ' Her bir kelimeyi sırayla arayıp biçimlendirme
    For i = LBound(kelimeler) To UBound(kelimeler)
        arananKelime = kelimeler(i)
      
        ' Word belgesinde arama yap
        bulunmaSonucu = True
        Do While bulunmaSonucu
            With ActiveDocument.Content.Find
                .Text = arananKelime
                .MatchCase = False
                .MatchWholeWord = True
                .Replacement.Text = arananKelime
                .Replacement.Font.Color = wdColorRed
                .Replacement.Font.Size = 16
                .Replacement.Font.Bold = True
                .Execute Replace:=wdReplaceOne
                bulunmaSonucu = .Found
            End With
        Loop
    Next i
  
    MsgBox "Kelime arama ve biçimlendirme işlemi tamamlandı.", vbInformation
End Sub
Açıklamalar:
  • kelimeDosyasi değişkeni, file.txt dosyanızın yolunu belirtir. Buradaki dosya yolunu kendi dosyanızın yoluna göre güncelleyin.
  • kelimeler = Split(dosyaIcerigi, vbCrLf) satırı, file.txt içindeki kelimeleri satır sonlarına göre ayırır ve bir diziye aktarır.
  • Do While bulunmaSonucu döngüsü ile her bir kelime arandıktan sonra biçimlendirilir: kırmızı renk, 16 punto ve kalın olacak şekilde ayarlanır.
Bu kodu çalıştırdığınızda, file.txt içindeki her kelime sırasıyla Word belgesinde aranıp belirtilen biçimle düzenlenmiş olacaktır.
Merhaba,
Dener misiniz?
Bu makro, file.txt dosyasındaki kelimeleri sırasıyla alarak Word belgesinde arayacak ve bulduğu kelimeleri belirtilen biçimde değiştirecek. Aşağıdaki makroyu Word VBA modülünde kullanabilirsiniz:

  1. Word’ü açın ve Alt + F11 tuşlarına basarak VBA editörünü açın.
  2. Ekle > Modül seçeneği ile yeni bir modül ekleyin.
  3. Aşağıdaki kodu bu modüle yapıştırın:
Kod:
Sub KelimeleriBulVeBicimlendir()
    Dim wordApp As Object
    Dim kelimeDosyasi As String
    Dim dosyaIcerigi As String
    Dim kelimeler() As String
    Dim i As Integer
    Dim arananKelime As String
    Dim bulunmaSonucu As Boolean
   
    ' file.txt dosyasının yolunu belirtin
    kelimeDosyasi = "C:\DosyaYolu\file.txt" ' Dosya yolunu düzenleyin
   
    ' file.txt dosyasını aç ve içeriği oku
    Open kelimeDosyasi For Input As #1
    dosyaIcerigi = Input(LOF(1), #1)
    Close #1
   
    ' Txt içindeki kelimeleri ayırarak bir diziye atıyoruz
    kelimeler = Split(dosyaIcerigi, vbCrLf)
   
    ' Her bir kelimeyi sırayla arayıp biçimlendirme
    For i = LBound(kelimeler) To UBound(kelimeler)
        arananKelime = kelimeler(i)
       
        ' Word belgesinde arama yap
        bulunmaSonucu = True
        Do While bulunmaSonucu
            With ActiveDocument.Content.Find
                .Text = arananKelime
                .MatchCase = False
                .MatchWholeWord = True
                .Replacement.Text = arananKelime
                .Replacement.Font.Color = wdColorRed
                .Replacement.Font.Size = 16
                .Replacement.Font.Bold = True
                .Execute Replace:=wdReplaceOne
                bulunmaSonucu = .Found
            End With
        Loop
    Next i
   
    MsgBox "Kelime arama ve biçimlendirme işlemi tamamlandı.", vbInformation
End Sub
Açıklamalar:
  • kelimeDosyasi değişkeni, file.txt dosyanızın yolunu belirtir. Buradaki dosya yolunu kendi dosyanızın yoluna göre güncelleyin.
  • kelimeler = Split(dosyaIcerigi, vbCrLf) satırı, file.txt içindeki kelimeleri satır sonlarına göre ayırır ve bir diziye aktarır.
  • Do While bulunmaSonucu döngüsü ile her bir kelime arandıktan sonra biçimlendirilir: kırmızı renk, 16 punto ve kalın olacak şekilde ayarlanır.
Bu kodu çalıştırdığınızda, file.txt içindeki her kelime sırasıyla Word belgesinde aranıp belirtilen biçimle düzenlenmiş olacaktır.
hocam öncelikle hızlı cevabınızdan dolayı teşekkür ederim. ancak tekerlerk döndü döndü döndü sonra dondu 15 dakika bekledim Word belgesini kapatıp açtım bir değişiklik olmadı.
 

tugkan

Altın Üye
Katılım
6 Kasım 2004
Mesajlar
367
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
16-10-2025
Bazı yerleri kendinize göre özelleştirmeniz gerekiyordu. Oraları düzelttiniz mi?

kelimeDosyasi = "C:\DosyaYolu\file.txt" ' Dosya yolunu düzenleyin
 
Katılım
17 Ocak 2009
Mesajlar
13
Excel Vers. ve Dili
2016 Office ve Türkçe
Sub KelimeleriAraVeBicimlendir()
Dim DosyaYolu As String
Dim DosyaNumarasi As Integer
Dim Kelime As String
Dim Doc As Document
Dim Bulunan As Range
Dim KelimeListesi As Collection
Dim KelimeSayaci As Integer

' txt dosyasının yolunu belirleyin
DosyaYolu = "C:\Users\...\Desktop\file.txt" ' <-- Dosya yolunu buraya girin
Set Doc = ThisDocument
Set KelimeListesi = New Collection

' txt dosyasını açma ve kelimeleri listeye ekleme
DosyaNumarasi = FreeFile
Open DosyaYolu For Input As DosyaNumarasi
Do While Not EOF(DosyaNumarasi)
Line Input #DosyaNumarasi, Kelime
KelimeListesi.Add Kelime ' Kelimeleri collection listesine ekle
Loop
Close DosyaNumarasi

' Listedeki her kelimeyi arama ve biçimlendirme
For KelimeSayaci = 1 To KelimeListesi.Count
Kelime = KelimeListesi(KelimeSayaci)

' Belge içinde kelimeyi ara ve biçimlendir
Set Bulunan = Doc.Content
With Bulunan.Find
.Text = Kelime
.Replacement.Text = Kelime
.Replacement.Font.Color = wdColorRed
.Replacement.Font.Size = 16
.Replacement.Font.Bold = True
.Execute Replace:=wdReplaceAll
End With

' Her 10 kelime aramasından sonra kısa bir duraklama
If KelimeSayaci Mod 10 = 0 Then
DoEvents ' Duraklama ile Word'ün yanıt vermesine izin ver
End If
Next KelimeSayaci

MsgBox "İşlem tamamlandı!"
End Sub

kodu yukarıda ki şekilde GPT den revize ettin kod çalıştı ancak türkçe karakterleri bulmadı, mesela "yetersiz" ve "olumsuz" kelimelerini bulmakta, ancak "yapılmadığı, düzenlenmediği, olmadığı vb gibi içinde türkçe karakter barındıran kelimleri bulmuyor
 

tugkan

Altın Üye
Katılım
6 Kasım 2004
Mesajlar
367
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
16-10-2025
Aşağıdaki güncellenmiş kodu dener misiniz?
Dosya yolunu güncellemeyi unutmayın.
Türkçe karakter içeren kelimeleri arama konusunda yaşadığınız sorun, Word'ün arama işlevinin bazı özel karakterleri tanımlamakta zorlanmasından kaynaklanıyor olabilir. Bu sorunu çözmek için, VBA koduna Unicode (özellikle Türkçe karakterleri) destekleyecek şekilde küçük bir güncelleme ekleyebiliriz.

Aşağıda güncellenmiş kodu paylaşıyorum. Bu sürüm, her kelimeyi belge içinde ararken daha güvenilir bir arama yapar ve Türkçe karakterleri destekler:

Kod:
Sub KelimeleriBulVeBicimlendir()
    Dim kelimeDosyasi As String
    Dim dosyaIcerigi As String
    Dim kelimeler() As String
    Dim i As Integer
    Dim arananKelime As String
    Dim bulunmaSonucu As Boolean

    ' file.txt dosyasının yolunu belirtin
    kelimeDosyasi = "C:\DosyaYolu\file.txt" ' Dosya yolunu burada kendi yolunuzla güncelleyin
    
    ' file.txt dosyasını aç ve içeriği oku
    Open kelimeDosyasi For Input As #1
    dosyaIcerigi = Input(LOF(1), #1)
    Close #1
    
    ' Txt içindeki kelimeleri ayırarak bir diziye atıyoruz
    kelimeler = Split(dosyaIcerigi, vbCrLf)
    
    ' Her bir kelimeyi sırayla arayıp biçimlendirme
    For i = LBound(kelimeler) To UBound(kelimeler)
        arananKelime = Trim(kelimeler(i)) ' Boşlukları temizleyin
        
        ' Word belgesinde arama yap
        bulunmaSonucu = True
        Do While bulunmaSonucu
            With ActiveDocument.Content.Find
                .Text = arananKelime
                .MatchCase = True ' Türkçe karakterleri hassasiyetle bulması için büyük/küçük harf duyarlı
                .MatchWholeWord = True
                .MatchWildcards = False
                .Replacement.Text = arananKelime
                .Replacement.Font.Color = wdColorRed
                .Replacement.Font.Size = 16
                .Replacement.Font.Bold = True
                .Execute Replace:=wdReplaceOne
                bulunmaSonucu = .Found
            End With
        Loop
    Next i
    
    MsgBox "Kelime arama ve biçimlendirme işlemi tamamlandı.", vbInformation
End Sub
Güncellemeler
  • .MatchCase = True: Bu ayar, aramanın büyük/küçük harf ve karakter hassasiyetini artırır. Özellikle Türkçe karakterler için bu ayarın açık olması daha doğru sonuçlar verir.
  • Trim: Trim işlevi, gereksiz boşlukları kaldırır. Bu da bazen aramada yanlış sonuçların çıkmasını önler.
Bu yeni sürümü deneyin ve Türkçe karakterli kelimeleri tanıyıp tanımadığını kontrol edin.
 
Katılım
17 Ocak 2009
Mesajlar
13
Excel Vers. ve Dili
2016 Office ve Türkçe
Aşağıdaki güncellenmiş kodu dener misiniz?
Dosya yolunu güncellemeyi unutmayın.
Türkçe karakter içeren kelimeleri arama konusunda yaşadığınız sorun, Word'ün arama işlevinin bazı özel karakterleri tanımlamakta zorlanmasından kaynaklanıyor olabilir. Bu sorunu çözmek için, VBA koduna Unicode (özellikle Türkçe karakterleri) destekleyecek şekilde küçük bir güncelleme ekleyebiliriz.

Aşağıda güncellenmiş kodu paylaşıyorum. Bu sürüm, her kelimeyi belge içinde ararken daha güvenilir bir arama yapar ve Türkçe karakterleri destekler:

Kod:
Sub KelimeleriBulVeBicimlendir()
    Dim kelimeDosyasi As String
    Dim dosyaIcerigi As String
    Dim kelimeler() As String
    Dim i As Integer
    Dim arananKelime As String
    Dim bulunmaSonucu As Boolean

    ' file.txt dosyasının yolunu belirtin
    kelimeDosyasi = "C:\DosyaYolu\file.txt" ' Dosya yolunu burada kendi yolunuzla güncelleyin
   
    ' file.txt dosyasını aç ve içeriği oku
    Open kelimeDosyasi For Input As #1
    dosyaIcerigi = Input(LOF(1), #1)
    Close #1
   
    ' Txt içindeki kelimeleri ayırarak bir diziye atıyoruz
    kelimeler = Split(dosyaIcerigi, vbCrLf)
   
    ' Her bir kelimeyi sırayla arayıp biçimlendirme
    For i = LBound(kelimeler) To UBound(kelimeler)
        arananKelime = Trim(kelimeler(i)) ' Boşlukları temizleyin
       
        ' Word belgesinde arama yap
        bulunmaSonucu = True
        Do While bulunmaSonucu
            With ActiveDocument.Content.Find
                .Text = arananKelime
                .MatchCase = True ' Türkçe karakterleri hassasiyetle bulması için büyük/küçük harf duyarlı
                .MatchWholeWord = True
                .MatchWildcards = False
                .Replacement.Text = arananKelime
                .Replacement.Font.Color = wdColorRed
                .Replacement.Font.Size = 16
                .Replacement.Font.Bold = True
                .Execute Replace:=wdReplaceOne
                bulunmaSonucu = .Found
            End With
        Loop
    Next i
   
    MsgBox "Kelime arama ve biçimlendirme işlemi tamamlandı.", vbInformation
End Sub
Güncellemeler
  • .MatchCase = True: Bu ayar, aramanın büyük/küçük harf ve karakter hassasiyetini artırır. Özellikle Türkçe karakterler için bu ayarın açık olması daha doğru sonuçlar verir.
  • Trim: Trim işlevi, gereksiz boşlukları kaldırır. Bu da bazen aramada yanlış sonuçların çıkmasını önler.
Bu yeni sürümü deneyin ve Türkçe karakterli kelimeleri tanıyıp tanımadığını kontrol edin.

üstad bunuda denedim ancak word bir müddet sonra yanıt vermiyor ... maalesef çalışmadı
 

tugkan

Altın Üye
Katılım
6 Kasım 2004
Mesajlar
367
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
16-10-2025
Word'un yanıt vermemesi, döngüden kaynaklanıyor olabilir; Türkçe karakterlerle yapılan aramalar, döngü sırasında belgeyi uzun süre işleme tabi tuttuğu için Word'ün donmasına yol açabilir. Kodda sonsuz döngü veya uzun işlem süresi yaratan bir durum varsa, bunu düzeltmek için bazı optimizasyonlar yapabiliriz.

Bu yeni sürümde, kelime belgedeki tüm içeriği tek seferde işlemek yerine her kelimeyi belirli bir sırayla bulup biçimlendirecek şekilde güncelleyelim. Ayrıca, belirli bir aramayı yalnızca bir kez yapmak üzere wdReplaceOne yerine wdReplaceAll kullanacağız. Bu da kodun daha hızlı çalışmasını sağlayacaktır.

Güncellenmiş kod şöyle:

Kod:
Sub KelimeleriBulVeBicimlendir()
    Dim kelimeDosyasi As String
    Dim dosyaIcerigi As String
    Dim kelimeler() As String
    Dim i As Integer
    Dim arananKelime As String

    ' file.txt dosyasının yolunu belirtin
    kelimeDosyasi = "C:\DosyaYolu\file.txt" ' Dosya yolunu burada kendi yolunuzla güncelleyin
    
    ' file.txt dosyasını aç ve içeriği oku
    Open kelimeDosyasi For Input As #1
    dosyaIcerigi = Input(LOF(1), #1)
    Close #1
    
    ' Txt içindeki kelimeleri ayırarak bir diziye atıyoruz
    kelimeler = Split(dosyaIcerigi, vbCrLf)
    
    ' Her bir kelimeyi sırayla arayıp biçimlendirme
    For i = LBound(kelimeler) To UBound(kelimeler)
        arananKelime = Trim(kelimeler(i)) ' Boşlukları temizleyin
        
        ' Word belgesinde arama ve biçimlendirme yap
        With ActiveDocument.Content.Find
            .ClearFormatting
            .Text = arananKelime
            .MatchCase = True ' Türkçe karakterler için büyük/küçük harf duyarlılığı
            .MatchWholeWord = True
            .MatchWildcards = False
            .Replacement.Text = arananKelime
            .Replacement.ClearFormatting
            .Replacement.Font.Color = wdColorRed
            .Replacement.Font.Size = 16
            .Replacement.Font.Bold = True
            .Execute Replace:=wdReplaceAll
        End With
    Next i
    
    MsgBox "Kelime arama ve biçimlendirme işlemi tamamlandı.", vbInformation
End Sub
Kodda Yapılan Değişiklikler
  • wdReplaceAll: Her kelime için tüm belgeyi tek seferde tarayıp değişiklik yapar. Bu sayede döngüden kaynaklanan uzun işlem süresi kısalır.
  • .ClearFormatting: Her aramadan önce eski biçimlendirmeyi temizleyerek sadece düz metinle eşleşme yapılmasını sağlar. Bu, özellikle önceden biçimlendirilmiş belgelerde daha doğru sonuçlar verir.
Bu kodla, Word’ün daha az işlem yüklenmesi ve daha hızlı yanıt vermesi beklenir. Yine de büyük belgelerde bu tür işlemler zaman alabilir. Kod çalıştıktan sonra bir başarı mesajı çıkacaktır.
 
Katılım
17 Ocak 2009
Mesajlar
13
Excel Vers. ve Dili
2016 Office ve Türkçe
türkçe karakter içeren kelimeleri maalesef bulamadı
Word'un yanıt vermemesi, döngüden kaynaklanıyor olabilir; Türkçe karakterlerle yapılan aramalar, döngü sırasında belgeyi uzun süre işleme tabi tuttuğu için Word'ün donmasına yol açabilir. Kodda sonsuz döngü veya uzun işlem süresi yaratan bir durum varsa, bunu düzeltmek için bazı optimizasyonlar yapabiliriz.

Bu yeni sürümde, kelime belgedeki tüm içeriği tek seferde işlemek yerine her kelimeyi belirli bir sırayla bulup biçimlendirecek şekilde güncelleyelim. Ayrıca, belirli bir aramayı yalnızca bir kez yapmak üzere wdReplaceOne yerine wdReplaceAll kullanacağız. Bu da kodun daha hızlı çalışmasını sağlayacaktır.

Güncellenmiş kod şöyle:

Kod:
Sub KelimeleriBulVeBicimlendir()
    Dim kelimeDosyasi As String
    Dim dosyaIcerigi As String
    Dim kelimeler() As String
    Dim i As Integer
    Dim arananKelime As String

    ' file.txt dosyasının yolunu belirtin
    kelimeDosyasi = "C:\DosyaYolu\file.txt" ' Dosya yolunu burada kendi yolunuzla güncelleyin
   
    ' file.txt dosyasını aç ve içeriği oku
    Open kelimeDosyasi For Input As #1
    dosyaIcerigi = Input(LOF(1), #1)
    Close #1
   
    ' Txt içindeki kelimeleri ayırarak bir diziye atıyoruz
    kelimeler = Split(dosyaIcerigi, vbCrLf)
   
    ' Her bir kelimeyi sırayla arayıp biçimlendirme
    For i = LBound(kelimeler) To UBound(kelimeler)
        arananKelime = Trim(kelimeler(i)) ' Boşlukları temizleyin
       
        ' Word belgesinde arama ve biçimlendirme yap
        With ActiveDocument.Content.Find
            .ClearFormatting
            .Text = arananKelime
            .MatchCase = True ' Türkçe karakterler için büyük/küçük harf duyarlılığı
            .MatchWholeWord = True
            .MatchWildcards = False
            .Replacement.Text = arananKelime
            .Replacement.ClearFormatting
            .Replacement.Font.Color = wdColorRed
            .Replacement.Font.Size = 16
            .Replacement.Font.Bold = True
            .Execute Replace:=wdReplaceAll
        End With
    Next i
   
    MsgBox "Kelime arama ve biçimlendirme işlemi tamamlandı.", vbInformation
End Sub
Kodda Yapılan Değişiklikler
  • wdReplaceAll: Her kelime için tüm belgeyi tek seferde tarayıp değişiklik yapar. Bu sayede döngüden kaynaklanan uzun işlem süresi kısalır.
  • .ClearFormatting: Her aramadan önce eski biçimlendirmeyi temizleyerek sadece düz metinle eşleşme yapılmasını sağlar. Bu, özellikle önceden biçimlendirilmiş belgelerde daha doğru sonuçlar verir.
Bu kodla, Word’ün daha az işlem yüklenmesi ve daha hızlı yanıt vermesi beklenir. Yine de büyük belgelerde bu tür işlemler zaman alabilir. Kod çalıştıktan sonra bir başarı mesajı çıkacaktır.
üstad eline sağlık kod çalıştı "yetersiz, eksik ve olumsuz" kelimelerini buldu ve gerekeni yaptı. ancak "bulunmadığı, olmadığı, yapılmadığı, düzenlenmediği vb gibi" kelimeleri türkçe karakter içerdiğinden bulmadı bir değişiklik te yapmadı. sorun tamamen türkçe karakterden kaynaklı olduğunu değerlendiriyorum. bunu çözmenin bir yolu var mı acaba
 

tugkan

Altın Üye
Katılım
6 Kasım 2004
Mesajlar
367
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
16-10-2025
Dener misiniz? Son çare

Türkçe karakterleri aramada yaşanan sorun, VBA'nın varsayılan arama işlevinin bazı Unicode karakterleri doğru algılayamamasıyla ilgilidir. Bu durumu çözmek için aşağıdaki yöntemi deneyebiliriz:

Unicode Desteğini Etkinleştirme: Word aramasında Unicode uyumluluğunu artırmak için .MatchCase ayarını kapatabiliriz. Ancak bu, bazen Türkçe karakterlerle beklenen sonuçları veremeyebilir.

Aşağıdaki kod, .MatchCase ayarını kapatarak tüm kelimeleri küçük/büyük harf ayrımı yapmadan arar, ancak Türkçe karakterleri içeren kelimeleri de algılaması için ek işlemler uygular:

Kod:
Sub KelimeleriBulVeBicimlendir()
    Dim kelimeDosyasi As String
    Dim dosyaIcerigi As String
    Dim kelimeler() As String
    Dim i As Integer
    Dim arananKelime As String

    ' file.txt dosyasının yolunu belirtin
    kelimeDosyasi = "C:\DosyaYolu\file.txt" ' Dosya yolunu burada kendi yolunuzla güncelleyin
    
    ' file.txt dosyasını aç ve içeriği oku
    Open kelimeDosyasi For Input As #1
    dosyaIcerigi = Input(LOF(1), #1)
    Close #1
    
    ' Txt içindeki kelimeleri ayırarak bir diziye atıyoruz
    kelimeler = Split(dosyaIcerigi, vbCrLf)
    
    ' Her bir kelimeyi sırayla arayıp biçimlendirme
    For i = LBound(kelimeler) To UBound(kelimeler)
        arananKelime = Trim(kelimeler(i)) ' Boşlukları temizleyin
        
        ' Word belgesinde arama ve biçimlendirme yap
        With ActiveDocument.Content.Find
            .ClearFormatting
            .Text = arananKelime
            .MatchCase = False ' Büyük/küçük harf duyarlılığı kapalı
            .MatchWholeWord = True
            .MatchWildcards = False
            .Replacement.Text = arananKelime
            .Replacement.ClearFormatting
            .Replacement.Font.Color = wdColorRed
            .Replacement.Font.Size = 16
            .Replacement.Font.Bold = True
            .Execute Replace:=wdReplaceAll
        End With
    Next i
    
    MsgBox "Kelime arama ve biçimlendirme işlemi tamamlandı.", vbInformation
End Sub
Açıklamalar ve Dikkat Edilmesi Gerekenler:
  • .MatchCase = False: Bu ayar sayesinde tüm aramalar küçük/büyük harf duyarsız yapılır. Türkçe karakterleri barındıran kelimelerde daha başarılı olabilir.
  • Unicode Sorunları: Eğer bu değişiklik hala çözüm sunmazsa, RegExp veya diğer karakter kütüphanelerini kullanmak gerekebilir, ancak bu durum kodu daha karmaşık hale getirebilir ve Word 2016'da her zaman etkili olmayabilir.
 
Katılım
17 Ocak 2009
Mesajlar
13
Excel Vers. ve Dili
2016 Office ve Türkçe
Dener misiniz? Son çare

Türkçe karakterleri aramada yaşanan sorun, VBA'nın varsayılan arama işlevinin bazı Unicode karakterleri doğru algılayamamasıyla ilgilidir. Bu durumu çözmek için aşağıdaki yöntemi deneyebiliriz:

Unicode Desteğini Etkinleştirme: Word aramasında Unicode uyumluluğunu artırmak için .MatchCase ayarını kapatabiliriz. Ancak bu, bazen Türkçe karakterlerle beklenen sonuçları veremeyebilir.

Aşağıdaki kod, .MatchCase ayarını kapatarak tüm kelimeleri küçük/büyük harf ayrımı yapmadan arar, ancak Türkçe karakterleri içeren kelimeleri de algılaması için ek işlemler uygular:

Kod:
Sub KelimeleriBulVeBicimlendir()
    Dim kelimeDosyasi As String
    Dim dosyaIcerigi As String
    Dim kelimeler() As String
    Dim i As Integer
    Dim arananKelime As String

    ' file.txt dosyasının yolunu belirtin
    kelimeDosyasi = "C:\DosyaYolu\file.txt" ' Dosya yolunu burada kendi yolunuzla güncelleyin
   
    ' file.txt dosyasını aç ve içeriği oku
    Open kelimeDosyasi For Input As #1
    dosyaIcerigi = Input(LOF(1), #1)
    Close #1
   
    ' Txt içindeki kelimeleri ayırarak bir diziye atıyoruz
    kelimeler = Split(dosyaIcerigi, vbCrLf)
   
    ' Her bir kelimeyi sırayla arayıp biçimlendirme
    For i = LBound(kelimeler) To UBound(kelimeler)
        arananKelime = Trim(kelimeler(i)) ' Boşlukları temizleyin
       
        ' Word belgesinde arama ve biçimlendirme yap
        With ActiveDocument.Content.Find
            .ClearFormatting
            .Text = arananKelime
            .MatchCase = False ' Büyük/küçük harf duyarlılığı kapalı
            .MatchWholeWord = True
            .MatchWildcards = False
            .Replacement.Text = arananKelime
            .Replacement.ClearFormatting
            .Replacement.Font.Color = wdColorRed
            .Replacement.Font.Size = 16
            .Replacement.Font.Bold = True
            .Execute Replace:=wdReplaceAll
        End With
    Next i
   
    MsgBox "Kelime arama ve biçimlendirme işlemi tamamlandı.", vbInformation
End Sub
Açıklamalar ve Dikkat Edilmesi Gerekenler:
  • .MatchCase = False: Bu ayar sayesinde tüm aramalar küçük/büyük harf duyarsız yapılır. Türkçe karakterleri barındıran kelimelerde daha başarılı olabilir.
  • Unicode Sorunları: Eğer bu değişiklik hala çözüm sunmazsa, RegExp veya diğer karakter kütüphanelerini kullanmak gerekebilir, ancak bu durum kodu daha karmaşık hale getirebilir ve Word 2016'da her zaman etkili olmayabilir.


üstadım aynı şekilde türkçe karakter içermeyen kelimelerde sorun yok, ancak türkçe harf içeren kelimeleri bulmuyor ama kod çalışıyor
 

tugkan

Altın Üye
Katılım
6 Kasım 2004
Mesajlar
367
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
16-10-2025
Maalesef daha fazla yardımcı olamayacağım. Umarım başka bir arkadaş devamını getirebilir.
 
Katılım
11 Temmuz 2024
Mesajlar
179
Excel Vers. ve Dili
Excel 2021 Türkçe
Merhaba, deneyip sonucu paylaşabilir misiniz;

Kod:
Sub KelimeleriBiçimlendir()

    Dim myFile As String
    Dim arrWords() As String
    Dim i As Integer
    Dim adoStream As Object
    Dim fileContent As String
    Dim arrWordsClean() As String
    Dim kelime As Variant
    Dim count As Integer
    myFile = "C:\DosyaYolu\file.txt"
    Set adoStream = CreateObject("ADODB.Stream")
    adoStream.Type = 2  ' Metin tipi
    adoStream.Charset = "utf-8"
    adoStream.Open
    adoStream.LoadFromFile myFile
    fileContent = adoStream.ReadText
    adoStream.Close
    Set adoStream = Nothing
    arrWords = Split(fileContent, vbCrLf)
    count = 0
    For Each kelime In arrWords
        If Trim(kelime) <> "" Then
            ReDim Preserve arrWordsClean(0 To count)
            arrWordsClean(count) = kelime
            count = count + 1
        End If
    Next kelime
    For i = LBound(arrWordsClean) To UBound(arrWordsClean)
        With ActiveDocument.Content.Find
            .ClearFormatting
            .Text = arrWordsClean(i)
            .Replacement.ClearFormatting
            .Replacement.Text = arrWordsClean(i)
            .Replacement.Font.Bold = True
            .Replacement.Font.Size = 16
            .Replacement.Font.Color = wdColorRed
            .Forward = True
            .Wrap = wdFindContinue
            .Format = True
            .MatchCase = False
            .MatchWholeWord = True
            .Execute Replace:=wdReplaceAll
        End With
    Next i
    MsgBox "İşlem tamamlandı."
End Sub
 
Katılım
17 Ocak 2009
Mesajlar
13
Excel Vers. ve Dili
2016 Office ve Türkçe
Merhaba, deneyip sonucu paylaşabilir misiniz;

Kod:
Sub KelimeleriBiçimlendir()

    Dim myFile As String
    Dim arrWords() As String
    Dim i As Integer
    Dim adoStream As Object
    Dim fileContent As String
    Dim arrWordsClean() As String
    Dim kelime As Variant
    Dim count As Integer
    myFile = "C:\DosyaYolu\file.txt"
    Set adoStream = CreateObject("ADODB.Stream")
    adoStream.Type = 2  ' Metin tipi
    adoStream.Charset = "utf-8"
    adoStream.Open
    adoStream.LoadFromFile myFile
    fileContent = adoStream.ReadText
    adoStream.Close
    Set adoStream = Nothing
    arrWords = Split(fileContent, vbCrLf)
    count = 0
    For Each kelime In arrWords
        If Trim(kelime) <> "" Then
            ReDim Preserve arrWordsClean(0 To count)
            arrWordsClean(count) = kelime
            count = count + 1
        End If
    Next kelime
    For i = LBound(arrWordsClean) To UBound(arrWordsClean)
        With ActiveDocument.Content.Find
            .ClearFormatting
            .Text = arrWordsClean(i)
            .Replacement.ClearFormatting
            .Replacement.Text = arrWordsClean(i)
            .Replacement.Font.Bold = True
            .Replacement.Font.Size = 16
            .Replacement.Font.Color = wdColorRed
            .Forward = True
            .Wrap = wdFindContinue
            .Format = True
            .MatchCase = False
            .MatchWholeWord = True
            .Execute Replace:=wdReplaceAll
        End With
    Next i
    MsgBox "İşlem tamamlandı."
End Sub

hocam çalıştı harikasınız ellerinize sağlık tuğkan hocam siz de çok sağolun yardımlarınız için minnettarım, yaklaşık parça parça olmak üzere 20.000 sayfa rapor inceleyeceğim 25-30 adet bir dizi kelimeyi bulup renklendirdiğimde inceleme işim çok kolaylaşacak kıymetli zamanlarını bana ayırıp yardımcı olmaya çalışan tugkan hocamada pitchoute hocamada sonsuz şükranlarımı ve minnetlerimi sunuyorum. saygılarımla
 
Katılım
11 Temmuz 2024
Mesajlar
179
Excel Vers. ve Dili
Excel 2021 Türkçe
Ne demek hocam, iyi çalışmalar diliyorum. Saygılar.
 
Üst