Belgemize tablo eklemek için aşağıdaki örneği inceleyelim. Formumuza tablo ekle ve kapat isimli iki adet komut butonu ekleyelim ve şu kodları yazalım:
Public Class Form1
Dim objWord As Object 'word programı
Dim objDocument As Object 'word belgesi
Dim objselection As Object
Dim objtable As Object
Dim objrange As Object
Const END_OF_STORY = 6
Private Sub cmdkapat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdkapat.Click
Try
objDocument.Close() 'word belgesini kapat
objWord.Quit() 'word uygulamasını kapat
objDocument = Nothing 'word belgesini bellekten sil
objWord = Nothing 'word uygulamasını bellekten sil
Catch
MsgBox("Önce belge açmanız gerekiyor")
Exit Sub
End Try
End Sub
Private Sub cmdtabloekle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdtabloekle.Click
objDocument = objWord.Documents.Add 'yeni word belgesi açıyoruz.
objWord.Visible = True 'word programını görünür hale getiriyoruz.
objselection = objWord.Selection
objselection.TypeText("Tablo 1") 'Tablodan önce Tablo 1 yazısını ekliyoruz
objselection.TypeParagraph() 'paragrafı seçiyoruz
objRange = objselection.Range
objDocument.Tables.Add(objRange, 6, 2) '6 satır 2 sütun genişliğinde tablo oluşturuyoruz
objtable = objDocument.Tables(1) 'Tablomuzu tanımlıyoruz
objselection.EndKey(END_OF_STORY) 'Belgeyi sonuna kadar seçiyoruz
objselection.TypeParagraph() 'Seçim tipini paragraf olarak belirliyoruz
With objDocument.Range.Tables(1) ' Tablomuzun genişliğini ayarlıyoruz
.Columns(1).SetWidth(120, 0)
.Columns(2).SetWidth(170, 0)
.Rows(1).Cells.Shading.BackgroundPatternColorIndex = 16 'Tablonun ilk satırını parlak gri yapıyoruz
.Rows(1).Range.Bold = True 'İlk satırı koyu yapıyoruz.
.Cell(1, 1).Range.Paragraphs.Alignment = 1 '(1,1) hücresini ortalıyoruz
With objDocument.Range.Tables(1) ' 'Satırları dolduruyoruz
.Cell(1, 1).Range.InsertAfter("İl") '1. satır 1. sütun
.Cell(1, 2).Range.InsertAfter("İlçe")
.Cell(2, 1).Range.InsertAfter("Diyarbakır")
.Cell(2, 2).Range.InsertAfter("Ergani")
.Cell(3, 1).Range.InsertAfter("Mersin")
.Cell(3, 2).Range.InsertAfter("Merkez")
.Cell(4, 1).Range.InsertAfter("Ankara")
.Cell(4, 2).Range.InsertAfter("Merkez")
.Cell(5, 1).Range.InsertAfter("Şanlıurfa")
.Cell(5, 2).Range.InsertAfter("Merkez")
.Cell(6, 1).Range.InsertAfter("Van")
.Cell(6, 2).Range.InsertAfter("Özalp")
End With
End With
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
objWord = CreateObject("Word.Application") 'yeni word uygulaması oluşturuyoruz.
End Sub
End Class
Program çalıştırılıp tablo ekle düğmesine basıldığında aşağıdaki gibi bir tablo oluşturulacaktır.
Tablo1
|
İl |
İlçe |
|
Diyarbakır |
Ergani |
|
Mersin |
Merkez |
|
Ankara |
Merkez |
|
Şanlıurfa |
Merkez |
|
Van |
Özalp |
SetWidth özelliği bir tablodaki sütun genişliklerini ayarlamak için kullanılan metoddur ve kullanımı şu şekildedir:
ifade.SetWidth(Sütun genişliği, sitil)
ifade ile belirtilen yerde Cell, Cells, Column, veya Columns nesneleri kullanılabilir
ColumnWidth : Bir ya da birden fazla sütunun genişliğini nokta cinsinden ayarlar.
Sitil olarak ise şu tanımlamalar kullanılabilir:
wdAdjustFirstColumn :Yalnızca ilk sütunun genişliği belirlenen değere göre ayarlanır.Eğer birden fazla sütun varsa bu sütun genişlikleri sağ kenara göre yeniden ayarlanır.
wdAdjustNone: Seçili olan bütün sütun veya hücrelerin genişlikleri belirlenen değere göre ayarlanır. Seçili olmayan sütunların genişlikleri sağa veya sola gerekli miktarda kaydırılarak otomatik olarak ayarlanır. Varsayılan değer budur.
wdAdjustProportional: Yalnızca ilk sütunun genişliği belirlenen değere göre ayarlanır.Eğer seçili olan birden fazla sütun varsa tablonun sağ kenarına göre ve seçili olmayan sütunlarla seçili olan sütunların genişliklerinin orantılı olarak ölçülendirilmesiyle genişlikleri yeniden düzenlenir. Eğer yalnızca bir hücre ya da sütun seçili ise tablonun sağ kenarına göre diğer hücre ya da sütunlar orantılı olarak ölçülendirilir.
wdAdjustSameWidth : Bütün sütunlar eşit olacak şekilde ayarlanır.
Eğer istenirse bu parametreler yerine şu rakamsal ifadeler de kullanılabilir.
wdAdjustFirstColumn = 2
wdAdjustNone = 0
wdAdjustProportional = 1
wdAdjustSameWidth = 3
.Rows(1).Cells.Shading.BackgroundPatternColorIndex satırı ise hücremizin zemin rengini değiştirmek için kullanılır ve şu renk değerlerini alır:
WdColorIndex
wdAuto 0
wdBlack 1
wdBlue 2
wdBrightGreen 4
wdByAuthor -1
wdDarkBlue 9
wdDarkRed 13
wdDarkYellow 14
wdGray25 16
wdGray50 15
wdGreen 11
wdNoHighlight 0
wdPink 5
wdRed 6
wdTeal 10
wdTurquoise 3
wdViolet 12
wdWhite 8
wdYellow 7
.Cell(1, 1).Range.Paragraphs.Alignment satırı ile tablomuzdaki hücrelerin hizalama şeklini belirledik. Herhangi bir yazı ya da paraqrafı hizalamak için de Alignment ifadesi kullanılabilir. Bu ifade şu parametre ve değerleri alır:
wdAlignParagraphCenter 1
wdAlignParagraphDistribute 4
wdAlignParagraphJustify 3
wdAlignParagraphJustifyHi 7
wdAlignParagraphJustifyLow 8
wdAlignParagraphJustifyMed 5
wdAlignParagraphLeft 0
wdAlignParagraphRight 2
wdAlignParagraphThaiJustify 9
Proje dosyasının linki:
http://www.volkanaktas.com/PrgDosya/tabloekle.rar