Uzun yıllar önce(2015) donanimhaber forum sitesindeki sorulara cevap vermek için Word VBA makroları yazmıştım. Forumda cevap olarak verdiğim kodları gözden geçirip düzenledim ve burada yayınlıyorum.
Soru 1
Diyelim ki 80 sayfalık bir belge var elimizde ve her bir sayfada küçük birer adet resim var. Yani toplam 80 resim. Ben bunların her birini tek tek düzenleyerek sayfanın tamamına yaymadan, toplu ve otomatik olarak sayfanın tamamını kaplayacak şekilde nasıl yayarım?
Cevap 1
Aşağıdaki VBA makroyu kullanabilirsiniz. Alttaki kodlar tüm resimlerin genişliğini 10cm'e ayarlar.
genislik = 10 'cm
satırındaki 10 sayısını değiştirebilirsiniz.
'Mesut Akcan 'mesutakcan.blogspot.com 'Belgedeki tüm resimlerin genişliğini 10 cm'ye ayarlar 'Yükseklik orantılı değişir Sub GenislikAyarla() Dim shp As InlineShape Dim genislik As Double genislik = 10 'cm Application.ScreenUpdating = False For Each shp In ActiveDocument.InlineShapes With shp .LockAspectRatio = msoTrue 'en/boy Orantısı sabit '.Height = (.Width / .Height) * CentimetersToPoints(genislik) .Width = CentimetersToPoints(genislik) End With DoEvents Next Application.ScreenUpdating = True MsgBox "İşlem Tamam!" End Sub
Soru 2
Cevap 2
Soru 3
Cevap 3
'Mesut Akcan 'mesutakcan.blogspot.com 'Belgedeki tüm resimlerin genişliğini 7cm, 'yüksekliğini 5 cm'ye ayarlar Sub GenislikVeYukseklikAyarla() Dim shp As InlineShape Dim genislik As Double Dim yukseklik As Double genislik = 7 'cm yukseklik = 5 'cm Application.ScreenUpdating = False For Each shp In ActiveDocument.InlineShapes With shp .LockAspectRatio = msoFalse 'en/boy Orantısı sabit değil .Height = CentimetersToPoints(yukseklik) .Width = CentimetersToPoints(genislik) End With Next Application.ScreenUpdating = True MsgBox "İşlem Tamam!" End Sub
Soru 4
Bu makroyu çalıştırmada sorunum yok lakin makroyu Word'e kalıcı olarak nasıl ekleriz. Word her açılışında makroyu çalıştırabileyim.
Cevap 4
Word'ü açın. ALT+F11e basın. Ctrl+R ile Project bölmesini açın.
Bu bölmede Normal yazan proje adını seçin.
Menüden Insert / Module tıklayın.
Açılan kod penceresine makro kodunu ekleyin.
Ctrl+S ile kaydedin.
Artık makroyu her dosyaya eklemeye gerek olmadan kullanabilirsiniz.
Soru 5
Verilen kodları değiştirerek kullanmaya çalıştım ama başarılı olamadım.
Word dosyama eklediğim tüm resimlerin 3,47 inç 2,48 inç olmasını istiyorum. Bunun için gereken makro konusunda yardımcı olabilir misiniz?
Cevap 5
'Mesut Akcan 'mesutakcan.blogspot.com 'Belgedeki tüm resimlerin genişliğini 3.47 inç, 'yüksekliğini 2.48 inç olarak ayarlar Sub GenislikVeYukseklikAyarla_2() Dim shp As InlineShape Dim genislik As Double Dim yukseklik As Double genislik = 3.47 'inç yukseklik = 2.48 'inç Application.ScreenUpdating = False For Each shp In ActiveDocument.InlineShapes With shp .LockAspectRatio = msoFalse 'en/boy Orantısı sabit değil .Height = InchesToPoints(yukseklik) .Width = InchesToPoints(genislik) End With Next Application.ScreenUpdating = True MsgBox "İşlem Tamam!" End Sub
maalesef word' de resim küçültme kodları microsoft plus 2021' de çalışmıyor. Hata vermiyor ama küçültme de yapmıyor.
YanıtlaSilKodlar denenip buraya aktarıldı. Programın güvenlik ayarlarında makro çalıştırmaya izin vermeniz gerekir.
Sil