AccessTr.neT

Tam Versiyon: Excel Ado Kullanımı
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Sayfalar: 1 2 3 4 5 6
Arkadaşlar elimizdeki kodu analiz etmeme yardımcı olur musunuz kod şudur

Private Sub connectExcelSheet()
    Dim Sql As String
    Dim BasTarih As Long, BitTarih As Long
    Dim VTSonSatir As Long
    Dim ADO_RS As ADODB.Recordset
    Dim ADO_CN As ADODB.Connection
    Dim ToplamTutar As Double
    '
    ToplamTutar = 0
   
    VTSonSatir = Sheets("DetayVeri").Cells(1048576, 8).End(xlUp).Row
   
    BasTarih = Cells(1, Selection.Column)
    BitTarih = Cells(2, Selection.Column)
   
    Sql = "SELECT TARIH, NAKIT_AKIS_KODU, HESAP_KODU, HESAP_ADI, ACIKLAMA, Doviz_TL, Doviz_USD, Doviz_EURO "
    Sql = Sql & vbCrLf
    Sql = Sql & "FROM [DetayVeri$E10:AH" & VTSonSatir & "] "
    Sql = Sql & vbCrLf
    Sql = Sql & "WHERE SUBE_UNVAN = '" & Cells(Selection.Row, 11) & "' "
    Sql = Sql & "AND RaporGrupKodu = '" & Cells(Selection.Row, 12) & "' "
    Sql = Sql & "AND YilAyGun Between " & BasTarih & " AND " & BitTarih & " "
    Sql = Sql & vbCrLf
    Sql = Sql & "ORDER BY TARIH "
   
    Cells(1, 1) = SQL
    '
    Set ADO_RS = New ADODB.Recordset
   
    Set ADO_CN = New ADODB.Connection
    ADO_CN.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;data source=" & ThisWorkbook.FullName & ";extended properties=""excel 8.0;hdr=yes"""
    ADO_CN.Open
    ADO_RS.Open SQL, ADO_CN, 3, 1
    '
    '  Eğer Hiç Kayıt Yoksa
        If ADO_RS.RecordCount = 0 Then
        ADO_RS.Close
        ADO_CN.Close
        Set ADO_RS = Nothing
        Set ADO_CN = Nothing
        MsgBox "Kayıt Bulunamadı.", vbCritical, "Veri Yok"
        Exit Sub
        End If
    ADO_RS.MoveFirst
        Do While Not ADO_RS.EOF
        Lst_Detay.AddItem
    '        Lst_Detay.Column(0, Lst_Detay.ListCount - 1) = ADO_RS.Fields("Departman").Value
    '        Lst_Detay.Column(1, Lst_Detay.ListCount - 1) = ADO_RS.Fields("MuhasebeHesapNo").Value
    '        Lst_Detay.Column(2, Lst_Detay.ListCount - 1) = Format(ADO_RS.Fields("FullTarih").Value, "DD/MM/YYYY")
    '        Lst_Detay.Column(3, Lst_Detay.ListCount - 1) = ADO_RS.Fields("FisNo").Value
    '        Lst_Detay.Column(4, Lst_Detay.ListCount - 1) = ADO_RS.Fields("Aciklama").Value
    '        Lst_Detay.Column(5, Lst_Detay.ListCount - 1) = Format(ADO_RS.Fields("Tutar_TL").Value, "#,###.00")
    '        ToplamTutar = ToplamTutar + ADO_RS.Fields("Tutar_TL").Value
        ADO_RS.MoveNext
        Loop
   
   
   
    Lst_Detay.TextAlign = fmTextAlignRight
    Txt_KayitSayisi.Text = ADO_RS.RecordCount
    Txt_ToplamTutar.Text = Format(ToplamTutar, "#,###.00")
   
    ADO_RS.Close
    ADO_CN.Close
    Set ADO_RS = Nothing
    Set ADO_CN = Nothing
    '
    'Lst_Detay.Height = 445
   
    DoEvents
End Sub
Baştaki tanımlamaları geçelim şuradan başlayalım

VTSonSatir = Sheets("DetayVeri").Cells(1048576, 8).End(xlUp).Row

"1048576" satır değeri galiba ama o sayfadaki son dolu sayfayı mı yazmış neye göre belirlenmiş 
"xlUp" de yukarı tara demek heralde ama bunun neden sondan başa olduğunu anlamadım
son satır bulmada daha önce paylaşılan farklı kombinasyonlar var ilk boş gördüğünde son satır diye geri dönenler var
bana lazım olan belirlenen sutun aralığına göre dolu olan son sutunu bulan cümlecik nedir acaba mesela bu olabilir mi

Kod:
Lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
şu örnek buldum
benim işimi görecek herhalde bu modul olabilir sayfadaki sağdan ve alttan en son dolu olan hücrenin satır numarasını buluyor
kodu analiz etmeye devam edelim

BasTarih = Cells(1, Selection.Column)


SQL = Sql & "WHERE SUBE_UNVAN = '" & Cells(Selection.Row, 11) & "' "


burada "Selection.Row" ve  "Selection.Column" nedir anlamadım muhtemelen bizim tarihleri tuttuğumuz hücrenin satır, sutun numarası 
ama sonradan girilen bir değer midir yoksa o satırdaki son satır, sutun mudur 
gelelim Excel cümlesine "from" dan önce yazan bu kısımda

SQL = "SELECT TARIH, NAKIT_AKIS_KODU, HESAP_KODU, HESAP_ADI, ACIKLAMA, Doviz_TL, Doviz_USD, Doviz_EURO "

bunlar veri aldığımız sutunların ilk hücrelerimi yani sutun başlıklarımı yoksa istediğimiz herhangi bir isim olabilir mi
geldik bağlantı cümlesine

ADO_CN.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;data source=" & ThisWorkbook.FullName & ";extended properties=""excel 8.0;hdr=yes"""

burada
"ThisWorkbook.FullName" değişken midir sabit midir 
"excel 8.0" kullandığımız excele göre değişen bir değer midir
Sayfalar: 1 2 3 4 5 6