Bir bölge belgesi (değil, bir belge bölgesi) üzerinde işlemler yapmak.
Bir Word belgesini temsil eden Document nesnesinin Range fonksiyonuyla kendi belirleyeceğiniz bir bölgeye erişebilirsiniz.
Fonksiyon sonucu bir Range nesnesi olacaktır.
Range fonksiyonuyla başlangıç ve bitiş konumlarını, yani ilk ve son karakter sıra numaralarını verdiğiniz bir bölge tanımlayabilirsiniz, ama bu çoğu zaman pratik bir çözüm olmayacaktır.
Bir paragraf, tablo, tablo satırı, sütunu veya hücresinin içerik bölgelerini temsil eden Range özellikleri de yine Range türünden nesneler olacaktır.
Belge içeriğindeki yerini iyi bildiğiniz bir bölgeye bu yolla erişmeniz daha pratik bir çözüm olacaktır. İlgilendiğiniz metin parçası bu bölgenin içinde kalan bir kısımsa, bölge sınırlarını aşağıda tanıttığımız fonksiyonlarla daraltarak asıl hedefinize erişebilirsiniz.
Range nesnesine ait
MoveStart fonksiyonuyla bölge başlangıcını kaydırırsınız.
MoveEnd fonksiyonuyla da bölge sonunu kaydırırsınız.
Bu fonksiyonları çağırırken argümanları adlarıyla vermeniz gerekir:
Unit argümanıyla kaydırma birimini belirtirsiniz.
Birimi WdUnits adlandırılmış değerler grubundan bir seçenekle belirlersiniz:
wdCharacter seçerseniz kaydırma birimi bir karakter olacaktır; Unit argümanının varsayılan değeri budur.
wdSentence seçerseniz birim bir cümledir.
wdWord seçeneği ile birim bir sözcük olur.
“Sözcük” veya “cümle” derken, alıştığınız dilbilgisi kurallarını bir kenara bırakın. Word programı için noktalama işaretleri dışındaki herhangi bir karakter grubu bir sözcük, iki noktalama işareti arasındaki bir karakterler grubu da bir cümledir.
Count argümanı ile de kaç karakter (veya sözcük, cümle) kaydıracağınızı belirtirsiniz. Bu argüman bir tamsayı değer alır. Geriye kaydırma yapmak için bu argümana negatif bir değer verirsiniz.
Bölge sınırlarını birim ve sayı belirterek kaydırmak yerine, belli karakterleri bulduğunuz konumlara kaydırmanız da mümkündür. Yine Range türüne ait
MoveStartUntil fonksiyonuyla bölge başını,
MoveEndUntil ile de bölge sonunu,
argüman olarak vereceğiniz bir karakter dizgisindeki herhangi bir karakteri bulana kadar kaydırabilirsiniz.
Bu iki fonksiyonun kabul edebileceği ikinci argüman Count'u kullanmışsanız, konum kaydırma için atlanacak en fazla karakter sayısını belirtebilirsiniz.
Count argümanıyla sözcük veya cümle değil, yalnızca karakter sayısını sınırlayabilirsiniz.
İçeriği olan bir Word bölgesi açın.
Bu belgeye ait “ThisDocument” VBA projesinde bir altyordam yaratın.
Bu içerikte belirleyeceğiniz bölgelere erişmek için Range türü bir nesne tanımlayın:
Dim bolge As Range
Bir paragraf, tablo, satır, sütun veya hücre bölgesine erişecek bir komut yazın:
Set bolge = Me.Paragraphs(1).Range
Eriştiğiniz bölgeyi ilgilendiğini kısmına indirgeyecek şekilde daraltacak komutlar ekleyin:
bolge.MoveStartUntil Cset:="K"
bolge.MoveEnd Unit:=wdCharacter, Count:=-1
İsterseniz bölge üzerinde yazı biçimlendirmesi yapacak,
bolge.Font.Italic = True
bölge içeriğine ekleme yapacak,
bolge.InsertBefore "Ön ekleme"
veya bölge içeriğini silecek
bolge.Delete
ya da bölge içinde bölücülük yapacak komutlar yazabilirsiniz.
Örnek belgenin başlangıçtaki içeriği aşağıdaki gibidir:
Sözcük Yatık harfli olacak kısım. Fazlalık cümle.
Paragraf 2 cümlesi. Koyu harfli olacak kısım.
sil Paragraf 3 sil
Aşağıda son halini sunduğumuz altyordam paragraf içeriklerindeki bölgelere sırayla erişerek onlar üzerinde işlemler yapacaktır.
Kaynak Dosya: “BolgelerUzerindeIslemler.docm”
Unutmayın; kitap veya ekran satırına sığmayan komut satırları alta sarkmış olabilir. Siz onları tek satır olarak yazacaksınız!
Sub BolgelerUzerindeIslemler()
Dim bolge As Range
Set bolge = Me.Paragraphs(1).Range
bolge.MoveStart Count:=9
bolge.MoveEnd Unit:=wdSentence, Count:=-1
bolge.Font.Italic = True
Set bolge = Me.Paragraphs(2).Range
bolge.MoveStartUntil Cset:="K"
bolge.MoveEnd Unit:=wdCharacter, Count:=-1
bolge.Font.Bold = True
Set bolge = Me.Range(Me.Paragraphs(3).Range.Start, Me.Paragraphs(3).Range.Start)
bolge.MoveEnd Unit:=wdWord, Count:=1
bolge.Delete
Set bolge = Me.Range(Me.Paragraphs(3).Range.End - 1, Me.Paragraphs(3).Range.End - 1)
bolge.MoveStart Unit:=wdWord, Count:=-1
bolge.Delete
End Sub