Anasayfa | Akademik Forum | Sizden Gelenler | Sipariş
Menü Açıklamaları
Sorular - Cevaplar
Makaleler
Makrolar
Yerleşik İşlevler
Animasyonlar
Yumurtalar
Fonksiyonlar
MTK Programlar
ExcelCE
Dosya İndir
Neler Yaptık?
İletişim
Makaleler
Visual Basic'den Excel'e Bağlantı - 2 - Serhat Turna - 22.07.2004
Excel – Visual Basic ilişkilerine devam ediyoruz ve asıl konumuz olan "Visual Basic 'ten Excel'e kayıt" konusuna başlıyoruz. Öncelikle Excel'i başlatıp yeni bir çalışma kitabı açalım. Bu çalışma kitabının içersine yeni bir çalışma sayfası ekleyelim. Bu sayfanın adı "PersonelBilgi" olsun. Diğer çalışma sayfalarını silelim. Şimdi kayıt alanlarımızı belirleyelim. Alanlarımız aşağıdaki gibi olsun.



Şimdi çalıma kitabını C: sürücüsünde "Personel" adlı klasörün içine "PersonelBilgi.xls" adıyla kaydedelim ve kapatalım. Artık kayıtları tutacağımız veritabanımız hazır hale geldi.

Visual Basic'i açalım ve yeni bir standart Exe projesi oluşturalım. Bu projede kullanacağımız nesneler ve isimleri aşağıdaki gibi olsun.



"Sıra No" olarak kullanacağımız textboxun "Enabled" özelliğini "False" olarak değiştirin. Çünkü burada sadece sıra numarasını görüntüleyeceğiz. Yani bilgi girişi olmayacak. Formun Son görüntüsü aşağıdaki gibi olacaktır. Bu projeyi C: sürücüsündeki "Personel" adlı klasöre kaydedin.



Sıra geldi işin kod yazma kısmına. Tabi önceki bölümde de açıkladığım gibi Visual Basic 'e Excel'i tanıtmamız gerekiyor.  "Project" mönüsünden "References" komutunu çalıştırıp "Microsoft Excel 10.0 Object Library" seçeneğini aktif hale getirelim. Herşey tamamlandı. Aşağıdaki kodları formun kod sayfasına yapıştırın.

Not:
Bu kodları yapıştırmadan kendiniz yazarsanız bazı şeyleri daha çabuk kavrayabilirsiniz.

Private Sub Command1_Click()
    txtSira.Text = WorksheetFunction.Count(Range("A1:A65000")) + 1

   
Do While Not IsEmpty(ActiveCell)
        ActiveCell.Offset(1, 0).Select
    Loop

   
ActiveCell.Value = txtSira.Text
    ActiveCell.Offset(0, 1).Value = txtAd.Text
    ActiveCell.Offset(0, 2).Value = txtDYeri.Text
    ActiveCell.Offset(0, 3).Value = txtMaasi.Text
    MsgBox "Verileriniz Kaydedildi"
    ActiveWorkbook.Save
    txtSira.Text = WorksheetFunction.Count(Range("A1:A65000")) + 1
    txtAd.Text = ""
    txtDYeri.Text = ""
    txtMaasi.Text = ""
    txtAd.SetFocus
End Sub

Private Sub Command2_Click()
  Application.Quit
  Unload Me
End Sub

Private Sub Command3_Click()
  If txtAd.Text = "" Then
    MsgBox "Lütfen Ad Soyad kutusuna geçerli personel girin."
    Exit Sub
  End If

 
Set adsoyad = Range("B2:B100").Find(txtAd.Text, _
                  SearchDirection:=xlNext, MatchCase:=False)
  If adsoyad Is Nothing Then
    MsgBox "Aradığınız Ad ve Soyad'da kayıt bulunamadı"
    Exit Sub
  End If

 
ilksatir = adsoyad.Row
  Set adsoyad = Range("B2:B100").FindPrevious(Range("B100"))
  sonsatir = adsoyad.Row
  Set adsoyad = Range(Cells(ilksatir, 2), _
                  Cells(sonsatir, 2)).Find(txtAd.Text, _
                  SearchDirection:=xlNext, MatchCase:=False)
  txtSira.Text = Cells(ilksatir, 1).Value
  txtAd.Text = Cells(ilksatir, 2).Value
  txtDYeri.Text = Cells(ilksatir, 3).Value
  txtMaasi.Text = Cells(ilksatir, 4).Value
End Sub

Private Sub Command4_Click()
     txtSira.Text = WorksheetFunction.Count(Range("A1:A65000")) + 1
     txtAd.Text = ""
     txtDYeri.Text = ""
     txtMaasi.Text = ""
     txtAd.SetFocus
End Sub

Sub form_load()
     KitapYolu = App.Path + "\PersonelBilgi.xls"
     Workbooks.Open (KitapYolu)
     Sheets("PersonelBilgi").Select
     Range("A1").Select
     txtSira.Text = WorksheetFunction.Count(Range("A1:A65000")) + 1
End Sub

Private Sub Form_Unload(Cancel As Integer)
  Application.Quit
End Sub

Artık programı çalıştırıp kayıt girebilir ve kayıt arayabiliriz. Kodları adım adım açıklayalım.

Formun Load Yordamı :
 
KitapYolu = App.Path + "\PersonelBilgi.xls"
KitapYolu isimli değişken ile kitabın yeri belirleniyor

Workbooks.Open (KitapYolu)
Çalışma kitabı açılıyor.

Sheets("PersonelBilgi").Select
Range("A1").Select
Çalışma kitabındaki "PersonelBilgi" isimli sayfa seçiliyor ve bu sayfadaki A1 hücresi seçiliyor.

txtSira.Text = WorksheetFunction.Count(Range("A1:A65000")) + 1
txtSira isimli Text kutusuna çalışma sayfası özelliği olan Count (say) kullanılarak bir sıra numarası atanıyor.

Private Sub Form_Unload(Cancel As Integer)
  Application.Quit
End Sub
Burası formun kapanış yordamıdır. Form herhangi bir şekilde kapanırken neler yapılacaksa buraya yazılır. Ben burada sadece "Application.Quit" kodlarını kullandım. Bunun anlamı "Uygulamadan Çık" tır. Tabi bu uygulama bizim yaptığımız uygulama değil, Excel uygulamasıdır. Eğer bunu yapmasaydık, Excel arka planda çalışır durumda olacaktı.

Şimdi kaydet düğmesinin kodlarına bakalım.

Do While Not IsEmpty(ActiveCell)
Burada bir döngü kullandık. Bu döngü sıra numarası içindi. A1 hücresi dolu ise ;

ActiveCell.Offset(1, 0).Select
bir alttaki hücreyi seç.

ActiveCell.Value = txtSira.Text
ActiveCell.Offset(0, 1).Value = txtAd.Text
ActiveCell.Offset(0, 2).Value = txtDYeri.Text
ActiveCell.Offset(0, 3).Value = txtMaasi.Text
MsgBox "Verileriniz Kaydedildi"
ActiveWorkbook.Save
Burada bütün textboxlardaki bilgilerimiz kayıt alanlarına yerleştiriliyor, mesaj kutusuyla kaydın tamamlandığı belirtiliyor ve çalışma kitabı kaydediliyor.

Personel Çağır adlı komut düğmesinin kodlarını açıklayalım.

If txtAd.Text = "" Then
  MsgBox "Lütfen Ad Soyad kutusuna geçerli personel girin."
  Exit Sub
End If
Eğer ismi yazacağımız kutucuk boş ise mesaj kutusu gönder ve yordamdan çık.

Set adsoyad = Range("B2:B100").Find(txtAd.Text, _
                  SearchDirection:=xlNext, MatchCase:=False)
Burada adsoyad isimli bir kısaltma yaptık. Bu arayacağımız kriter ve bu kriter bulunduğu kayıt alanıdır.

txtSira.Text = Cells(ilksatir, 1).Value
txtAd.Text = Cells(ilksatir, 2).Value
txtDYeri.Text = Cells(ilksatir, 3).Value
txtMaasi.Text = Cells(ilksatir, 4).Value
Son olarak arattığımız ismin diğer bilgilerini kutucuklara yerleştirdik.

İşte bu kadar. Çok zor olmadığını gördünüz. Bu projenin dosyalarının indirmek için tıklayın.

Tabi daha öncede söylediğim gibi kodları kendiniz yazarsanız olayı daha iyi kavramış olursunuz.

Herkese çalışmalarında başarılar dilerim..

 

Destek
M.ÖZTÜRK - Y.KARAMAN
Bu siteyi, "Hayatını çocuklarının Ahlâklı ve Dürüst yetişmesi için harcamış olan Cefakar ve Fedakar, Canım ANNEM'e adadım."
Copyright © 1998-2011 M. Temel Korkmaz - Tüm hakları saklıdır.