öncelikle tablo yapıların çok karmaşık olduğu için kod yavaş çalışmakta ama senin istediğin oldu
modül bölümü geneldir açıklamaya gerek yoktur lakin
kodun bu bölümünü açıklama gereği duydum diğer ilgilenen arkadaşlar içinde sanırım faydalı olur
Private Sub Komut0_Click()
rstkayit diye bir ado kaydı belirledik
Dim rstkayit As New ADODB.Recordset
-------------------------------------------
strsql diye bir string alanı oluşturdukki bununla tabloyu açalım
Dim strsql As String
----------------------------------------------
strsql diye bir string alanı oluşturdukki bununla tabloyu ikinci defa açalım
Dim strsql2 As String
------------------------------------------------------------
stfile diye bir string alan oluşturdukki buna
Excel sayfasının yerini tarif edelim
Dim stFile As String
-----------------------------------------------------
ad diye bir alan oluşturdukki buna ilk açtığımız tablodan isimleri alalım
Dim ad As String
-------------------------------------------------------------
CurrentProject.Path veritabanımızın olduğu yer diğerini kendimiz ekledik
stFile = CurrentProject.Path & "\" & "ED.xls"
-----------------------------------------------------
burda strsql adlı alana tablonun sorgusunu yazdık
strsql = "SELECT * From GMDETAY "
---------------------------------------------------------
rstkayit alanının yeni bir kayıt alanı olduğunu söyledik
Set rstkayit = New ADODB.Recordset
----------------------------------------------------
rstkayit alanının strsql le verdiğimiz sorguyu açacağını belirttik ve sadece okunabilir olduğunu söyledik adLockReadOnly
rstkayit.Open strsql, CurrentProject.Connection, adOpenStatic, adLockReadOnly
---------------------------------------------------------------
burda rstkayit ile açtığımız tabloyu dolanmaya başlıyoruz ilk kayıttan itibaren
If rstkayit.EOF <> True Then
Do
-----------------------------------------------------------
ad alanına her kayıtta EDAD alanındaki isimi alıyoruz
ad = rstkayit("EDAD")
-----------------------------------------------------------------
strsql2 alanına bir sorgu belirledik ve bu sorguyu ad alanına verdiğimiz isim ile sınırladıkki her kayıtta exceel sayfasına her shet ayrı bir kayıt olarak alabilelim
strsql2 = "SELECT * From GMDETAY WHERE EDAD Like '" & ad & "*'"
----------------------------------------------------------------
burda modülü çağırıyoruz strsql2 açtırarak ona ad alanına aldığımız ismide ekleyerek A1 hücresinden başlamak üzere her sayfaya bir kişi olmak üzere kayıtları exceele aktarıyoruz
Call CopyRs2Sheet(strsql2, stFile, ad, "A1")
-----------------------------------------------------------
burda rstkayit sonraki kayıt sonraki kayıt diye döndürüyoruz
rstkayit.MoveNext
-------------------------------------------------
rstkayit son kaydına kadar bu işlem devam etsin diyoruz
Loop Until rstkayit.EOF
End If
-----------------------------------------------------------------
burda rstkayit da verdiğimiz tablo ile bağlantıyı kesiyoruz
Set rstkayit = Nothing
Set conn = Nothing
--------------------------------------------------------
sanırım bunu söylememe gerek yok
End Sub
unutmadan
Excel sayfasını kesinlikle silmiyorsun ve veritabanının olduğu yerde olmalı ve aynı isimde olmalı şayet değiştirisen "ED.xls" burdanda değiştirmen gerekir
meşhur çin atasözü "ACCESS İLE YAPABİLECEKLERİNİZ HAYAL EDEBİLECEKLERİNİZ İLE SINIRLIDIR" siz ne kadar hayal edebiliyorsunuz