sayfa etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
sayfa etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

25 Mart 2024 Pazartesi

Word VBA: Belgedeki tüm resimleri aynı boyuta ayarla

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

Word VBA makro kodları nasıl çalıştırılır?

Cevap 2

Word programındayken, ALT+F11e bas.
Menüden Insert / Module tıkla. Açılan kod penceresine kodu ekle.
Word programında makro çalıştırmak için ALT+F8e bas makro adını seç. Çalıştır tıkla.

Soru 3

Üstteki makro sadece genişliği değiştiriyor. Ben belgede bulunan tüm resimlerin genişliğini 7, yüksekliğini 5 olarak ayarlamak istiyorum. Bunun için makro var mı?

Cevap 3

Aşağıdaki makroyu kullanabilirsiniz. Eğer orijinal resimleriniz 7x5 oranında değilse sünme olabilir.
'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

Aşağıdaki makro kodunu kullanın.
'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

19 Kasım 2023 Pazar

Word: Aynı belgede yatay ve dikey sayfalar yapma

Yayınlama: 22/12/2013
Güncelleme: 19/11/2023
Bir Word belgesinde sayfa ayarlarında yapılan değişiklikler genellikle tüm sayfalara uygulanır. Ancak, belirli durumlarda bir veya birkaç sayfanın diğerlerinden farklı bir düzen içermesi gerekebilir. Örneğin, sayfa yapısının normalde dik olduğu bir belgede, belirli bir sayfanın yatay olması istenebilir.

Bu tür durumları yönetmek için sayfaları bölümlendirmek gerekir. İşlem şu adımları içerir:
  • İmleci bölüme ayrılacak sayfanın başına getirin, örneğin, 2. sayfanın başı (eğer 2. sayfa yoksa, 1. sayfanın sonuna) veya istenen konumda (bu durumda konumdan sonraki içerikler bir sonraki sayfaya taşınır).
  • Menüden;
    SAYFA DÜZENİ / KESMELER / SONRAKİ SAYFA (Word 2013)
    EKLE / KESME / SONRAKİ SAYFA (Word 2003)
    seçeneğine tıklayın.

  • Bu adımdan sonra belge, imleç öncesi ve sonrası olmak üzere iki bölüme ayrılır. Ayrıca, ihtiyaç duyulursa başka bölümler ekleyebilirsiniz.
Artık her bir bölümü diğerlerinden bağımsız olarak sayfa yapısı ayarlayabilirsiniz.

Örneğin, 2. bölümü yatay yapmak için:
  • Menüden;
    SAYFA DÜZENİ / YÖNLENDİRME / YATAY (Word 2013)
    DOSYA/ SAYFA YAPISI / KENAR BOŞLUKLARI / YATAY  (Uygulama yeri: Bu bölüme) seçeneğine tıklayın (Word 2003).

13 Aralık 2022 Salı

Excel satırlarını belli sayıda bölme ve dosya veya sayfalara aktarma

Yayınlama: 20/02/2021
Güncelleme: 13/12/2022
Donanım Haber Forumundaki bir soru üzerine cevap olarak verdiğim Excel VBA kodlamaları buraya aktarıyorum.

Soru 1

Elimde içerisinde 40.000 satır veri bulunan bir Excel dosyası var. Bu 40.000 satırı 100'erli olarak bölmem gerekiyor.

Cevap: Aşağıdaki yazdığım VBA makrosu ile 100'erli satır olarak yeni eklenen sayfalara aktarılmaktadır.
Makroları kullanmak için;
Excel dosyası açıkken;
Excel durum çubuğundaki sayfa adında sağ tıkla / Kod görüntüle
Kod alanına aşağıdaki kodları ekle
Çalıştırmak için F5e bas ya da Excel'e geç / ALT+F8e bas makroyu seç / Çalıştır.

Sub SatirlariSayfalaraAktar_v1()
 'Excel satırlarını 100'erli olarak bölüp yeni sayfalara aktarır
 'makro: Mesut Akcan
 '15 Eylül 2018
 For n = 1 To Cells.SpecialCells(xlLastCell).Row Step 100
     satirlar = Str(n) & ":" & Trim(Str(n + 99))
     Rows(satirlar).EntireRow.Copy
     Sheets.Add After:=ActiveSheet
     ActiveSheet.Paste 
     DoEvents
 Next
 Sheets(1).Activate
 End Sub

Soru 2

Bu 100'lü bölümleri farklı yeni Excel dosyası olarak kaydedebilir miyiz.

3 Ocak 2021 Pazar

Vb ile ActiveX Bileşen Oluşturma-11: superText #8

Önceki bölümde oluşturduğumuz projeye devam ediyoruz. superText ActiveX kontrolüne yeni özellikler ekleyeceğiz.

Label(Etiket) bileşeni ile Caption(başlık) ekleme

Gelişmiş özelliklere sahip bir metin kutusu oluşturduk ancak dikkat ederseniz projelerde genelde metin kutusu ile birlikte solunda, sağında ya da üstünde bir Label(etiket) de eklenir.

Projelerimize Label ve superText kontrollerini ayrı ayrı eklemektense Label'i superText bileşenine dahil etsek nasıl olur? Daha kullanışlı olur tabii ki. Öyleyse başlayalım.

  • Önceki bölümdeki proje dosyasını açın. Eğer proje dosyaları yoksa önceki bölümdeki linkten dosyayı indirebilirsiniz.
  • Test formundaki bileşenleri silin.
  • superText(superText.ctl) formunu açın. Shift+F7
  • TextBox'ı aşağı taşıyıp üstünde kalan boşluğa Label ekleyin.
  • Label1'in özelliklerini ayarlayın
    AutoSize: True
    Left: 0
    Top: 0
  • superText kontrolü forma eklediğimizde;
    Label, sol üst köşede,
    TextBox, Label'in 3px altında olacak.

9 Aralık 2020 Çarşamba

Vb ile ActiveX Bileşen Oluşturma-10: superText #7

Önceki bölümde kaldığımız yerden devam ediyoruz. superText ActiveX kontrolüne yeni özellikler ekleyeceğiz.

Önceki bölümde sihirbaz kullanarak Property Page(özellik sayfası) oluşturmuştuk. Sayfaya tüm özelliklerin eklenmediği görülüyor. Tümünü eklemeye de gerek yok zaten.

Özellik sayfasına manuel özellik ekleme

Manuel olarak sayfaya nasıl özellik eklenir?
Örnek olması açısından sayfaya eklenmemiş olan 2 özellik ekleyerek bu sorunun cevabını bulalım.

  • Önceki bölümdeki proje dosyasını açın. Eğer proje dosyaları yoksa önceki bölümdeki dosyayı indirebilirsiniz.
  • İlk olarak ekleyeceğimiz özellik Alignment (yaslama)
    Bu özelliğe atanabilecek 3 değer var. 0: Sola, 1: Sağa, 2: Ortaya
  • Yazi formunu açın.
  • Alignment değerini aktarmak için bir açılır liste(ComboBox) kullanabilirdik ancak kullanımını açıklamak için farklı olarak OptionButton (Seçenek Butonu) kullanacağım.
    OptionButton kullanmadan önce seçenekleri bir arada tutmak için form'a bir adet Frame ekleyin.
  • Frame1'in Caption özelliğine Alignment ya da Yaslama yazın.
  • Frame1 içine OptionButton ekleyin. Özelliklerini aşağıdaki gibi değiştirin
    Name: optAlignment
    Caption: Sol
  • OptionButton'u kopyalayın. Frame1 seçili iken Ctrl+V ile yapıştırın.
  • Bir uyarı çıkacak. Index oluşturmak için Evet tıklayın.
  • 2. eklenen OptionButton'un Caption özelliğine Sağ yazın.
  • Ctrl+V ile tekrar yapıştırın. 3. eklenen OptionButton'un Caption özelliğine Orta yazın.

Şimdi kod eklemeye geçelim.
Form açıldığında superText kontrolün Alignment değeri kaç ise formdaki optAlignment seçenek butonu index'i seçili olacak.

8 Aralık 2020 Salı

Vb ile ActiveX Bileşen Oluşturma-9: superText #6

Önceki bölümde kaldığımız yerden devam ediyoruz. superText ActiveX kontrolüne yeni özellikler ekleyeceğiz.

Standart kontrollerin dışında bir kontrol eklediğinizde kontrol özelliklerinde (Custom) özelliği görmüşsünüzdür (Örneğin Microsoft Windows Common Controls).

Bu özelliği çift tıkladığınızda özellikleri ayarlayabileceğiniz bir pencere (Property Pages) açılır.
Bu bölümde superText ActiveX kontrolüne Property Page ekleyeceğiz.

Property Page Ekleme

  • Önceki bölümdeki proje dosyasını açın. Eğer proje dosyaları yoksa önceki bölümdeki dosyayı indirebilirsiniz.