Word'de Paragraf Silme Makrosu

Katılım
30 Mart 2005
Mesajlar
755
Excel Vers. ve Dili
2016 EN
Merhaba,
Wordde her yazışmada karşıman çıkan ve her defasında silmesi çok zamanımı alan bir paragraf var. silmek için makroya ihtiyacım var,
yardımınız için şimdiden tşk
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,679
Excel Vers. ve Dili
Excel 2019 Türkçe
Verdiğiniz örnekte iki paragraf mevcut, ayrıca bu paragraflar, dokümanın neresinde ve hep aynı metinden mi oluşuyor ?
 
Katılım
30 Mart 2005
Mesajlar
755
Excel Vers. ve Dili
2016 EN
evet, silinecek paragraflar 2 adet, aralarında ==== mevcut ve hep bu şekilde. yardımınızı rica ederim
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,767
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
ekli dosyayı inceleyiniz.
 

Ekli dosyalar

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Merhaba,
Alternatif olarak aşağıdaki kodu kullanabilirsiniz.
Kod:
Sub Makro1()
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "="
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
    End With
    Selection.Find.Execute

If Selection.Text = "=" Then
Do While krk = 0
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
krk = Selection.Range.ComputeStatistics(Statistic:=wdStatisticCharacters)
If krk = 0 Then Selection.TypeBackspace
Loop
Selection.MoveUp Unit:=wdParagraph, Count:=1, Extend:=wdExtend
Selection.Delete
Selection.MoveDown Unit:=wdParagraph, Count:=2, Extend:=wdExtend
Selection.Delete
End If
End Sub
 

Ekli dosyalar

Son düzenleme:
Katılım
30 Mart 2005
Mesajlar
755
Excel Vers. ve Dili
2016 EN
sn leumruk,

tşk ederim, kod çalışıyor fakat 2 sorum olacak;

1-belge çok uzun ve içinde "=" geçen başka paragrafları da siler mi bu makro?
2-makroyu word her açıldığında otomatik öalıştırsın diye nasıl kaydedebilirim? (her belgede çalıştırmak üzere)
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
sn leumruk,

tşk ederim, kod çalışıyor fakat 2 sorum olacak;

1-belge çok uzun ve içinde "=" geçen başka paragrafları da siler mi bu makro?
2-makroyu word her açıldığında otomatik öalıştırsın diye nasıl kaydedebilirim? (her belgede çalıştırmak üzere)
Merhaba,
Kodları Thisdocument bölümünden silip NewMacro'ya kopyalarsanız tüm word dosyalarınızda çalışacaktır. Açılışta otomatik çalışması için ise Makronun başlığını Autoopen yapmanız gerekir. Yani aşağıya ekleyeceğim kodu Newmacro'ya kopyalayın.
2. sorunuza gelince: Dosyada bulunan ilk "=" işareti ne ise işlemi orada gerçekleştirir. Diğerlerinde işlem yapmaz. İşlemi daha garanti hale getirmek için tek "=" yerine 5 veya 10 adet "=" işareti kullanabilirsiniz. böylece kod yanyana bulunan 10 eşittir işareti neredeyse oraya gider.
Kod:
Sub Autoopen()
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "="
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
    End With
    Selection.Find.Execute

If Selection.Text = "=" Then
Do While krk = 0
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
krk = Selection.Range.ComputeStatistics(Statistic:=wdStatisticCharacters)
If krk = 0 Then Selection.TypeBackspace
Loop
Selection.MoveUp Unit:=wdParagraph, Count:=1, Extend:=wdExtend
Selection.Delete
Selection.MoveDown Unit:=wdParagraph, Count:=2, Extend:=wdExtend
Selection.Delete
End If
End Sub
 
Katılım
30 Mart 2005
Mesajlar
755
Excel Vers. ve Dili
2016 EN
Sn.leumruk,
yardımınız için minnettarım.
ilgili kodu, MS outlook'ta maiilerimde kullanmak için sormuştum. email düzenleyimi word dür. yolladığınız kodlar, normal word dosyalarında sorunsuz çalışıyor. outlookta bir emaili cevaplamak için açtığımda çalışması gerekiyor. o zaman çalışmıyor ama makro pencerresini açıp çalıştırınca çalışıyor. yani otomatik çalışma sorunu var.
diğer konu, "=" işaretini 3 veya 5 yaptığımda sadece "=" işareti ve altını siliyor. üstündeki paragrafı bırakıyor.
yardımlarınızı rica ederim
 
Katılım
30 Mart 2005
Mesajlar
755
Excel Vers. ve Dili
2016 EN
Peki,

"__________ NOD32" ile başlayıp "Information __________" ile biten cümleyi nasıl sildirebiliriz? Ortasındaki yazanlar değişkendir.
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Peki,

"__________ NOD32" ile başlayıp "Information __________" ile biten cümleyi nasıl sildirebiliriz? Ortasındaki yazanlar değişkendir.
Sn. turkanet,
Öncelikle bir önceki mesajınızı cevaplıyorum: Outlokta word dosyası hiç denemedim. Ancak şu kadarını biliyorum. Autoopen kodu güvenlik nedeniyle olsa gerek bazı özel durumlarda çalışmıyor. Sanırım bu da onlardan birisi olsa gerek.
Bu sorunuza cevap verebilmem için örnek dosyayı eklemeniz gerekli. Metinlerin yerleşimini görmeden ve üzerinde deneme yapmadan kod yazmam özellikle word dosyalarında mümkün değil.
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Merhaba,
Aşağıdaki kodu kullanabilirsiniz. Ben "__ NOD32 " olarak aldım. Siz isterseniz öndeki çizgi sayısını artırabilirsiniz. Veya aramada "Information"u kullanabilirsiniz. Kodun mantığı şu: Verinin bulunduğu satır bulunur ve bu satır komple silinir. Bu mantığa göre kodu istediğiniz gibi düzenleyebilirsiniz.
Kod:
Sub dene()
With Selection.Find
Do
    .Text = "__ NOD32"
    .Execute
    If .Found = True Then
    .Wrap = wdFindContinue
    Selection.HomeKey Unit:=wdLine
    Selection.EndKey Unit:=wdLine, Extend:=wdExtend
    Selection.Delete
    End If
Loop While .Found = True
End With
End Sub
 
Katılım
30 Mart 2005
Mesajlar
755
Excel Vers. ve Dili
2016 EN
sağolun işime yaradı,
sayfa sonundaki boş satırları silmek için de yardımınıza ihtiyacım var. şimdiden tşk.
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
sağolun işime yaradı,
sayfa sonundaki boş satırları silmek için de yardımınıza ihtiyacım var. şimdiden tşk.
Merhaba,
Aşağıdaki kodu deneyin.
Kod:
Sub Bosluk_Sil()
Selection.EndKey Unit:=wdStory
Do While krk = 0
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
krk = Selection.Range.ComputeStatistics(Statistic:=wdStatisticCharacters)
Selection.TypeBackspace
Loop
End Sub
 
Katılım
30 Mart 2005
Mesajlar
755
Excel Vers. ve Dili
2016 EN
sn üstad;
kodu vba penderesini açıp run dediğimde çalışıyor ama word belgesinde alt+f8 yapınca çalıştırmıyor. kodu her yere yazıp denedim. hata nerede olabilir?
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
sn üstad;
kodu vba penderesini açıp run dediğimde çalışıyor ama word belgesinde alt+f8 yapınca çalıştırmıyor. kodu her yere yazıp denedim. hata nerede olabilir?
alt + f8 makroyu çalıştırmaz; makro penceresini açar. Makroyu buradan seçip çalıştırmalısınız. Makroyu ancak bir kısayol tuşuna atayarak bu şekilde çalıştırabilirsiniz.
 
Katılım
30 Mart 2005
Mesajlar
755
Excel Vers. ve Dili
2016 EN
ben de onu demek istedim. makro penceresini açıp, makroyu seçip çalıştır demekten bahsediyorum zaten. bir de, sayfanın son satırında " " (boşluk) karakteri olunca Bosluk_Sil makrosu o satırda karakter olduğu için silmiyor. bunu da yapmam mümkün mü? yani son satırda sadece boşluk olan satırı da silebilmek? tşk ederim
 
Son düzenleme:

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
ben de onu demek istedim. makro penceresini açıp, makroyu seçip çalıştır demekten bahsediyorum zaten. bir de, sayfanın son satırında " " (boşluk) karakteri olunca Bosluk_Sil makrosu o satırda karakter olduğu için silmiyor. bunu da yapmam mümkün mü? yani son satırda sadece boşluk olan satırı da silebilmek? tşk ederim
alt+f8 için bir çözüm önerim yok.
Kod zaten boşlukları siliyor. Boşlukları silmemesi gibi bir şey söz konusu değil. Mesajınız üzerine tekrar tekrar denedim. Boşluk silmede bir sorun yaşamadım. Deneme sırasında metnin son karakterini de sildiğini farkettim. kodu aşağıdaki şekilde değiştirince o problem de çözüldü.
Kod:
Sub Makro1()
Selection.EndKey Unit:=wdStory
Do While krk = 0
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
krk = Selection.Range.ComputeStatistics(Statistic:=wdStatisticCharacters)
If krk = 0 Then
Selection.TypeBackspace
End If
Loop
End Sub
 
Üst