Tablo Ekleme, Silme ve Tabloya Veri Aktarma...


Tablo Ekleme, Silme ve Tabloya Veri Aktarma İşlemleri

Merhaba, bu makalemizle sizlerle belgemize tablo ekleme, silme ve bir tabloya veri ekleme işlemlerini inceleyeceğiz elbette VBA kodları yardımıyla. Haydi vakit kaybetmeden çalışmaya başlayalım isterseniz.

  1. Öncelikle yeni bir belge oluşturuup onun makro güvenlik düzeyini düşük olarak ayarlayıp kaydediyoruz. Microsoft Word programının gerek 2003 gerekse 2007 ile 2010 arasındaki sürümleri için bu işlemin nasıl yapılacağını daha önce sizlerle ele almıştık ancak konuyu hatırlamak isteyenler buradan bir kez daha inceleyebilirler.
  2. Sonrasında belgemize aşağıdaki ekran çıktısında verildiği üzere 2 adet ComboBox (yani açılan kutu) ve 3 adet CommandButton nesnesi ekleyerek bunların name özelliklerini yine aşağıda verilen ekran çıktısında olduğu gibi ayarlıyoruz. Çok defa söyledim ama bir kez daha hatırlatayım bu isimlendirme zorunlu değildir ancak kodları yazarken dikkatli olmalı ve doğru kodları doğru nesnenin doğru olayına yazmalısınız.

  1. Son olarak Alt+F11 ile VBA düzenleyicisi ekranına ulaşıyor burada aşağıda verilen kodları yazıyoruz. Kodları yazmak sizlerin lehine bir durumdur, yazdıkça bazı şeyler sizlerde yer edecektir.
  2. İşlem sonunda belgemizi kaydedip kapatıyor ve sonra yeniden açıyoruz artık her şey tamam test edebiliriz. Kodlarımızı şöyle çalışıyor, Tablo yap  belgemizde daha önce tablo varsa bunların hepsini silip sizin belirlediğiniz satır ve sütun sayısına sahip bir tablo ekliyor, olası hata durumunda belgedeki paragraf sayısı kontrol ediliyor ve 2 den az paragraf varsa 2. paragraf eklenerek bunun içeriğine hata mesajı yazdırılıyor. Veri ekle düğmesi ise belgenizde en az bir tablo bulunması durumunda bu tabloyu rasgele sayılarla dolduruyor hata durumunda ise Tablo Yap düğmesi gibi davranıyor.

Kaynak Kodlar :


'tanimlanmayan degiskenlerin kullanimasina izin verme
Option Explicit
Dim tablo As Table
Private Sub btnCikis_Click()
'1. Acik belgeyi kaydetmeden cik
    Application.Quit wdDoNotSaveChanges
'2. Acik belgeyi kaydet ve  cik
'    Application.Quit wdSaveChanges
End Sub
Private Sub btnTabloYap_Click()
On Error GoTo hata
'Belgede var olan tum tablolar siliniyor.
If ThisDocument.Tables.Count > 0 Then
Do
    ThisDocument.Tables(ThisDocument.Tables.Count).Delete
Loop Until ThisDocument.Tables.Count = 0
End If
'tablo için bir paragraf ekleniyor.
If ThisDocument.Paragraphs.Count < 2 Then
    ThisDocument.Paragraphs.Add
End If
On Error GoTo hata
'Seçilen satir ve sütun sayısına sahip bir tablo oluşturuluyor
    Set tablo = ThisDocument.Tables.Add(ThisDocument.Paragraphs(2).Range, _
    Val(ComboBoxSatirlar.Text), Val(ComboBoxSutunlar.Text))
     With tablo
'olustulan tablonun ic ve dis kenarliklari ayarlaniyor
        .Borders.InsideLineStyle = wdLineStyleSingle
        .Borders.OutsideLineStyle = wdLineStyleSingle
     End With
Exit Sub
hata:
If ThisDocument.Paragraphs.Count < 2 Then
    ThisDocument.Paragraphs.Add
End If
ThisDocument.Paragraphs(2).Range.Font.Color = RGB(255, 0, 0)
ThisDocument.Paragraphs(2).Range.Text = "Hata oluştu! " & Err.Description
End Sub

Private Sub btnVeriDoldur_Click()
Dim satir, sutun As Integer
'şayet belgede en az bir adet tablo var ise işlem yap
If ThisDocument.Tables.Count > 0 Then
'her zaman en ilk eklenen tabloya
    Set tablo = ThisDocument.Tables(1)
    With tablo
        For satir = 1 To .Rows.Count
            For sutun = 1 To .Columns.Count
            'hucre icerisindeki bilgiler siliniyor
                .Cell(satir, sutun).Range.Select
                Selection.Delete
            'hucreye 1-100 arasinda bir sayi aktariliyor
                .Cell(satir, sutun).Range.InsertAfter Round(Rnd * 100 + 1)
                .Cell(satir, sutun).Range.Font.ColorIndex = Round(Rnd * 14 + 1)
                .Cell(satir, sutun).Range.Font.Size = 14
                .Cell(satir, sutun).Range.Font.Bold = True
                .Cell(satir, sutun).Range.Font.Italic = True
            Next
        Next
    End With
Else
'belgede tablo yok ise
If ThisDocument.Paragraphs.Count < 2 Then
    ThisDocument.Paragraphs.Add
End If
ThisDocument.Paragraphs(2).Range.Font.Color = RGB(255, 0, 0)
ThisDocument.Paragraphs(2).Range.Text = "Lütfen Tablo Yap düğmesini kullanarak bir tablo ekleyiniz"
End If
End Sub

Private Sub Document_Open()
Dim sayici As Integer
ComboBoxSatirlar.Clear: ComboBoxSutunlar.Clear
For sayici = 1 To 10
    ComboBoxSatirlar.AddItem Str(sayici)
    ComboBoxSutunlar.AddItem Str(sayici)
Next
ComboBoxSatirlar.ListIndex = 3
ComboBoxSutunlar.ListIndex = 4
End Sub


Yardımcı olması dileğiyle. Güç sizinle olsun.