word- Aynı kelimede iki farklı yazı tipi stilini bulmak

Katılım
20 Şubat 2007
Mesajlar
650
Excel Vers. ve Dili
2007 Excel, Word Tr
Merhaba!
Bir cümle içerisinde bazı kelimelerin baş tarafı bold iken sonu normale dönüşmüş. yada baş tarafı normal iken sonu italiğe dönüşmüş. (Pdf'ten worde çevirilmiş bir belge) Örnekler:

dönüşmüş kelime (normal ve italik karışmış)
dönüşmüş kelime (bold ve normal karışmış)

Tüm boldları veya italikleri bulup sırayla incelemek çok vaktimi alacak.
Bu tür kelimeleri bulmak için bir yöntem veya makro olabilir mi?
Teşekkürler.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,704
Excel Vers. ve Dili
Excel 2019 Türkçe
Bulunca normale mi dönüştüreceksiniz ?
 
Katılım
20 Şubat 2007
Mesajlar
650
Excel Vers. ve Dili
2007 Excel, Word Tr
Bulunca cümlesine göre değişecek. Hepsi bold, hepsi normal veya italik olacak. Yani bulmayı sağlamak benim için yeterli.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,704
Excel Vers. ve Dili
Excel 2019 Türkçe
Bu işlemi Bul fonksiyonu ile yapabilirsiniz.
 

Ekli dosyalar

Katılım
20 Şubat 2007
Mesajlar
650
Excel Vers. ve Dili
2007 Excel, Word Tr
Dökümanımda yüzbinden fazla madde var. Ben sadece bold olanı değil, özellikle yarısı normal yarısı bold olan kelimeyi bulmak istiyorum. Yani iki stili aynı anda ihtiva eden bir aramayı yapmak istiyorum.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,704
Excel Vers. ve Dili
Excel 2019 Türkçe
Aynı anda iki farklı stili aramıyor.
Kod:
Sub bold()
    Selection.Find.ClearFormatting
    Selection.Find.Font.bold = True
    With Selection.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
End Sub
Sub italic()
    Selection.Find.ClearFormatting
    Selection.Find.Font.italic = True
    With Selection.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
End Sub
 
Katılım
20 Şubat 2007
Mesajlar
650
Excel Vers. ve Dili
2007 Excel, Word Tr
Şöyle bir makro yapılabilir mi?

*Bold olanı bul
*Bulunanların önünde veya arkasında bitişik olarak boşluk varsa geç ve aramaya devam et. (bu işlem kelimenin tek bir stilde olduğunu gösterir)
*Bulunanların önünde veya arkasındaki 1 adet bitişik karaktere bak, normal ise dur. (bu işlem kelimenin karışık stilde olduğunu gösterir)

Teşekkürler.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,704
Excel Vers. ve Dili
Excel 2019 Türkçe
Anladığım kadarıyla verilerinizin bir standartı yok, bu şekilde bir çözüm üretmek zor.
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,471
Excel Vers. ve Dili
Office 2010 & 2013 tr
Şöyle bir makro yapılabilir mi?

*Bold olanı bul
*Bulunanların önünde veya arkasında bitişik olarak boşluk varsa geç ve aramaya devam et. (bu işlem kelimenin tek bir stilde olduğunu gösterir)
*Bulunanların önünde veya arkasındaki 1 adet bitişik karaktere bak, normal ise dur. (bu işlem kelimenin karışık stilde olduğunu gösterir)

Teşekkürler.
Merhaba,
Bu isteğinize göre bir kod hazırladım. Eğer istediğiniz gibiyse kod geliştirilerek değiştirme kısmı da eklenebilir.
NOT: Eğer belirttiğiniz biçimde bir kelime bulursa imleç kelimenin üzerine gidecektir; aksi takdirde hiçbir işlem yapmaz ya da eğer tamamen kalın fontta olan ilk kelimenin sonuna gider.
Kod:
Sub karakterdeg()
Application.ScreenUpdating = False
Selection.Find.ClearFormatting
Selection.Find.Font.bold = True
With Selection.Find
Do
    .Text = " "
    .Forward = True
    .Execute
If .Found = True Then
Selection.Font.bold = False
End If
    .Wrap = wdFindContinue
Loop While .Found = True
End With

Selection.Find.ClearFormatting
Selection.Find.Font.bold = True
With Selection.Find
Do
    .Text = ""
    .Forward = True
    .Execute
    If .Found = True Then
    Sy = Selection.Range.ComputeStatistics(Statistic:=wdStatisticCharactersWithSpaces)
        Selection.MoveLeft Unit:=wdCharacter, Count:=1
        Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        krk = Selection.Range.ComputeStatistics(Statistic:=wdStatisticCharacters)
        krkbsl = Selection.Range.ComputeStatistics(Statistic:=wdStatisticCharactersWithSpaces)
        If krk > 0 And Selection.Font.bold = False Then
        Selection.MoveLeft Unit:=wdWord, Count:=1
        Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
            Exit Sub
        Else:
        If krkbsl = 0 Then Sy = Sy - 1
        Selection.MoveRight Unit:=wdCharacter, Count:=Sy + 1
        Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        krk = Selection.Range.ComputeStatistics(Statistic:=wdStatisticCharacters)
        If krk > 0 And Selection.Font.bold = False Then
        Selection.MoveLeft Unit:=wdWord, Count:=1
        Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
            Exit Sub
        End If
        End If
    End If
    .Wrap = wdFindContinue
Loop While .Found = True
End With
End Sub
 
Son düzenleme:
Katılım
20 Şubat 2007
Mesajlar
650
Excel Vers. ve Dili
2007 Excel, Word Tr
Güzel bir çalışma olmuş.
Her bulunan bold karakterler kümesinde durmaması, problemi buluncaya kadar döngünün devam etmesi için biraz daha geliştirmeli diye düşünüyorum. Çünkü bulunan karakterlerin önü veya sonu boşluk ise problem yok, geç şeklinde çalışmalı. Bu sayede daha kısa sürede işlemi tamamlayabiliriz.
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,471
Excel Vers. ve Dili
Office 2010 & 2013 tr
Güzel bir çalışma olmuş.
Her bulunan bold karakterler kümesinde durmaması, problemi buluncaya kadar döngünün devam etmesi için biraz daha geliştirmeli diye düşünüyorum. Çünkü bulunan karakterlerin önü veya sonu boşluk ise problem yok, geç şeklinde çalışmalı. Bu sayede daha kısa sürede işlemi tamamlayabiliriz.
Eklediğim kodun yaptığı işlevi aktarıyorum:
Makroyu çalıştırdığınızda kalın ve ince karakterlerin bulunduğu kelimeye gider. Eğer karışık biçimlendirmeli bir kelime yoksa bulduğu ilk kalın biçimlendirmeli kelimede durur.
Belirttiğiniz biçimlendirmedeki kelimede işleminizi bitirdikten sonra imleci kelimenin sağına alıp kodu yeniden çalıştırdığınızda bir sonraki karışık biçimlendirmeli kelimeyi bulur.
NOT: Kodu güncelledim. Belirttiğiniz biçimlendirmeyi bulduğunda o kelimeyi tamamen seçmeye yarayan bir satır ekledim.
Eğer istediğinizi yanlış anladığımı düşünüyorsanız, örnek dosya üzerinde hangi kelimeye ne tür bir işlem yaptırmak istediğinizi örnek kelimelerle açıklayınız.
 
Katılım
20 Şubat 2007
Mesajlar
650
Excel Vers. ve Dili
2007 Excel, Word Tr
Deneme dosyası ekledim. Her bold içeren kelimede değil -deneme belgesi için söylüyorum- sadece "Atasözü" ve "karşılayacağını" kelimelerinde durması gerekiyor. Boşluk varsa hiç font kontrolü yapma ve geç diyebilirsek tamamdır.
 

Ekli dosyalar

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,471
Excel Vers. ve Dili
Office 2010 & 2013 tr
Deneme dosyası ekledim. Her bold içeren kelimede değil -deneme belgesi için söylüyorum- sadece "Atasözü" ve "karşılayacağını" kelimelerinde durması gerekiyor. Boşluk varsa hiç font kontrolü yapma ve geç diyebilirsek tamamdır.
Merhaba,
9 nolu mesajdaki kodu isteğiniz doğrultusunda güncelledim.
 
Katılım
20 Şubat 2007
Mesajlar
650
Excel Vers. ve Dili
2007 Excel, Word Tr
Şimdi tamam. Çok teşekkür ederim.
 
Üst