Exceldeki işlemlerden, Excel
dosyasının VBA Kod sayfasında yapacağımız düzenlemelerle haberdar olabiliriz.
Bunun için kendi hazırlayacağımız bir DLL’den yararlanmak mümkün. Örnek olarak
vereceğim DLL belirttiğimiz sabit bir yolda bulunan veritabanımıza, Excel
dosyamız her kaydedildiğinde Kayıt Tarihi ve saatini ekleyecek.
Öncelikle
bir Veritabanımızın olması şart. Veritabanımızın ismi vtExcel. İçerisinde tek
tablo var. Alanları KayıtNo(OtomatikSayı), KayıtTarihi(Metin),
KayıtSaati(Metin) olan tablomuzun ismi tblKayıt. Veritabanımız “C:\” dizininde.
Yeni bir Proje
Başlatıyoruz. Proje türü olarak ActiveX DLL ‘yi seçiyoruz. Projemize bir
Class1.cls modülü eklenmiş durumda. Şimdi projemizin adını “ExcelKaydet”,
Modülümüzün adını da “Kayıt” olarak değiştiriyoruz.
Modulümüzün
içerisine istediğimiz kayıt işlemini gerçekleştirecek aşağıdaki fonksiyonu
yazacağız:
Function Kaydet()
‘Değişkenlerimizi tanımlıyoruz
Dim Bağlantı As Connection
Dim KayıtSeti As Recordset
Dim sqlMetni As String
‘Öncelikle veritabanımız ile
bağlantılarımızı kuruyoruz
Set Bağlantı = New ADODB.Connection
Bağlantı.Open "Driver={Microsoft
Access Driver (*.mdb)}; DBQ=" & "C:\vtExcel.mdb"
sqlMetni = "SELECT * From
tblKayıt"
‘KayıtSetimizi oluşturup açıyoruz
Set KayıtSeti = New ADODB.Recordset
KayıtSeti.Open sqlMetni, Bağlantı,
adOpenKeyset, adLockOptimistic
‘Excelde ‘Kaydet’ komutu
verildiği andaki Tarih ve Saati veritabanımıza ekliyoruz
KayıtSeti.AddNew
KayıtSeti.Fields(1) = Date
KayıtSeti.Fields(2) = Time
KayıtSeti.Update
‘KayıtSetimizi, Veritabanımızı
kapatıp, değişkenleri serbest bırakıyoruz
KayıtSeti.Close
Set KayıtSeti = Nothing
Bağlantı.Close
Set Bağlantı = Nothing
sqlMetni = ""
End Function
İşimizi
görecek dll fonksiyonumuz hazır. Şimdi Dll oluşturuyoruz. Bu işlem de son
derece basit. Tıpkı exe derler gibi Make ExcelKayıt.dll komutunu veriyoruz ve
dll dosyamızı “C:\” altına ExcelKayıt.Dll” olarak derliyoruz.
Bu aşamadan
sonrası da Excel’de yapacağımız kodlamalara kalıyor. Takibini yapacağımız Excel
dosyasını açtıktan sonra
Araçlar >
Makro > Visual Basic düzenleyicisi komutları ile VBE penceresine geçiyoruz.
Burada ilk yapacağımız işlem Excel Referanslarına bizim projeyi de eklemek. Bu
işlemi tıpkı VisualBasic’deki Referans ekleme işlemi gibi yapıyoruz.
Tools
menüsünden References seçeneği ile açılan pencere tanıdık gelecektir. Buradan
Browse butonu ile “C:\” altına kaydettiğimiz “ExcelKayıt.dll” dosyasını seçip
onaylıyoruz. DLL dosyamız Excele tanıtılmış oldu.
Bu işlemden
sonra Exceli bize ihbar edecek olan Sub’umuzu yazabiliriz.
Sub Bildir()
Dim sınıf As Object
Set sınıf =
CreateObject("ExcelKayıt.Kayıt")
sınıf.Kaydet
End Sub
Görüldüğü gibi
bu Sub DLL içerisine eklediğmiz “Kaydet” fonksiyonunu tetikliyor ve bizim
fonksiyonumuz da tetiklendikten sonra üzerine düşeni yapacak.
Peki bu sub ne
zaman devreye girecek?
Bizim
amacımız, kullanıcı Excel dosyasını kaydettiği her an, bu kayıt işleminin
tarihini ve saatini veritabanımıza eklemek. Dolayısı ile WorkBook’un save
olaylarından biri gerçekleştiğinde olmalı bu iş. WorkBook’un BeforeSave olayı
bu işimizi görür, bu olaya yazabiliriz Sub’umuzu çalıştıracak kodu. Sol üstteki
açılan kutudan WorkBook’u, Sağ üstteki açılan kutudan da BeforerSave’i
seçiyoruz. Bu olaya yazacağımız kod tek kelime: Subumuzun adı “Bildir.”
Excel VBE
kodlarımız şöyle olmalı:
Private Sub
Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Bildir
End Sub
Sub Bildir()
Dim sınıf As Object
Set sınıf =
CreateObject("ExcelKayıt.Kayıt")
sınıf.Kaydet
End Sub
Kaydedip,
Excel kitabımıza geçelim. (Bu kayıt bile
veritabanımıza işlenmiş olmalı). Excel kitabını kaydetmeyi deneyin. Herhangi
bir bildirim olmadan o anın tarihi ve saati veritabanına kaydedildi bile.
Kontrol edebilirsiniz.
Hiç yorum yok:
Yorum Gönder