Bir Word belgesine dosyalardan alınan resimler yerleştirmek.
Document nesnesinin InlineShapes özelliği nesnenin temsil ettiği belgedeki resimler dahil, tüm şekillerin bir koleksiyonunu temsil eder.
Aslında bu özellik satır-içi şekillerin, yani paragraflar arasında yer alan şekillerin koleksiyonudur. Biz çoğunlukla bu tür şekillerle uğraşacağınızı düşünerek, daha fazla ayrıntıya girmiyoruz. Hatta, diyebiliriz ki çizgilerle, kutularla filan değil, yalnızca resimlerle uğraşacaksınız. Yani bu kısımda sunduğumuz çözüm örneği size yeterli olacaktır.
Bu özellik değeri aslında InlineShapes türü bir koleksiyon nesnesidir.
Belge içeriğindeki bir bölgeyi temsil eden Range nesnesinin de InlineShapes diye bir özelliği vardır; o bölge içeriğindeki konumlu şekiller koleksiyonunu temsil eder.
Selection türünün InlineShapes özelliğiyle de o an seçili bölge veya konumdaki şekillerin bir koleksiyonuna erişebilirsiniz.
InlineShapes türünün AddPicture fonksiyonuyla bir belgenin/bölgenin şekiller koleksiyonuna bir resim ekleyebilirsiniz.
Fonksiyonun ilk ve zorunlu argümanı FileName ile resim dosyasının bilgisayar dosya sistemindeki adresini verirsiniz.
İsteğe bağlı LinkToFile argümanı mantıksal bir belirteçtir; varsayılan değeri False resmin eklendiği zamanki bir kopyasının belgede gözükeceği anlamına gelir. Bu argümana True değeri atarsanız resim dosyası sonradan değişmişse belgede en son halinin gözükmesini sağlarsınız.
Yine isteğe bağlı SaveWithDocument argümanı da bir mantıksal belirteçtir; varsayılan değeri False resmin belgeyle birlikte kaydedilmeyeceği anlamına gelir. Bu argümana True değeri atarsanız, resmin Word belgesi içeriğine gömülü olarak kaydedilmesini sağlarsınız.
Range argümanıyla da resmin kaydedileceği bölge veya konumu belirlersiniz.
Resim ekleme fonksiyonunu bir bölgeyi temsil eden bir Range nesnesi veya seçili konumu temsil eden Selection nesnesi aracılığıyla çağırmışsanız, bu son argümana gerek kalmaz; resim Range/Selection nesnesinin temsil ettiği bölge veya konuma yerleşir.
AddPicture fonksiyonunun sonucu InlineShape türü bir nesnedir; eklenen resmi temsil eder. Bu nesneye ait
Borders özelliğiyle resmin kenarlıklarını,
Width özelliğiyle resmin genişliğini,
Height özelliğiyle resmin yüksekliğini belirleyebilirsiniz.
Boyut özellikleri Width ve Height punto cinsinden değerler alır.
ScaleWidth ve ScaleHeight özelliklerine yüzdelik değerler atayarak da resmi ölçeklendirebilirsiniz.
Örneğin, bu iki özelliğe 50 değeri atayarak resmi orijinal boyutlarının yarısına ölçeklemiş, yani alan olarak dörtte birine indirgemiş olursunuz.
İçeriğine resim yerleştireceğiniz belgeyi açın.
Belgeye ait VBA projesinde bir altyordam yaratın.
İçeriğine resim yerleştireceğiniz bölgeyi temsil edecek bir Range nesnesi tanımlayın:
Dim konum As Range
Bu nesne aracılığıyla resim yerleştireceğiniz bölgeye, diyelim bir tablo hücresine erişin:
Set konum = tablo.Cell(1, 1).Range
Ekleyeceğiniz resim öğesine erişmek isteyecekseniz, InlineShape türünden bir nesne tanımlayabilirsiniz:
Dim resim As InlineShape
Bu konuma tam dosya adresini vereceğiniz bir resim dosyasını yerleştirecek komut yazın:
Set resim = konum.InlineShapes.AddPicture("C:\Resimler\Resim1.jpg")
Tabi siz bu uydurma adres yerine belgeye yerleştireceğiniz resmin adresi her neyse, onu yazacaksınız.
İsteğe bağlı olarak, resmi boyutlandıracak komutlar ekleyebilirsiniz:
resim.Width = CentimetersToPoints(1.5)
Bir döngüyle birden fazla resim ekleyecekseniz, resim konumlarını ve resim dosya adreslerini döngü sayacını kullanarak, belli bir kurala göre oluşturacak değişkenler de tanımlamalısınız.
Aşağıda son halini verdiğimiz altyordam boş bir belgeye 2x2’lik bir tablo yerleştiriyor ve sonra hücrelere “Resim1.png”, “Resim2.png”, … adlı dosyaları açarak resimler yerleştiriyor. Resim adlarını içiçe iki döngü içinde arttırdığı tablo satır ve sütun numaralarını toplayarak oluşturuyor.
Her bir resmi içinde bulunduğu hücrenin genişliğinin 2/3’ü genişlikte olacak şekilde boyutlandırıyor. Resmin boyut oranları orijinaldekiyle aynı kalsın diye de yüksekliği genişlikle aynı oranda ölçeklendiriyor.
Kaynak Dosya: “BelgeyeResimlerEklemek.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 BelgeyeResimlerEklemek()
Dim konum As Range
Set konum = Me.Content
konum.Collapse (wdCollapseEnd)
Me.Tables.Add Range:=konum, NumRows:=2, NumColumns:=2
Dim tablo As Table
Set tablo = Me.Tables(1)
Dim resim As InlineShape
Dim hucre As Cell
Dim dosya As String, klasor As String
klasor = "C:\TestKlasoru"
Dim i As Integer, j As Integer
For i = 1 To 2
For j = 1 To 2
Set hucre = tablo.Cell(i, j)
Set konum = hucre.Range
konum.Collapse (wdCollapseStart)
dosya = klasor & "\Resim" & CStr(i + j) & ".png"
Set resim = konum.InlineShapes.AddPicture(dosya)
resim.Width = 2 * hucre.Width / 3
resim.ScaleHeight = resim.ScaleWidth
Next j
Next i
End Sub