Excel Den Hücre Verisi Alma ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
19/01/2020, 13:05

berduş

sayın @Myalim şablonu oturttum ama çalışmanız sorun çıkartmaya çok açık bir yapıda yani kullanıcı hatalarına çok açık o nedenle ne kadar düzgün çalışır bilemiyorum. eğer kullanıcı yanlışlıkla G sütunu yerine başka bir sütuna yazsa yada yanlışlıkla satır kaydırsa
mesela
Adı: berduş
Adı kelimesi C12 de iken Berduş kelimesi G12 olmalıyken eğer Adı kelimesi C12 ama Berduş yanlışlıkla G13e yazılırsa
yada exceldeki SERİ, TC KİMLİK NO, ...ADI,Baba Adı, Ana Adı..... alanlarının sıralaması değişirse çalışma yine hata verir, daha kötüsü hata vermez ama veriler yanlış alana kaydedilir .
özellikle doğum tarihi alanı ve tabloya eklenmeyecek olan NUFUSA KAYITLI OLDUĞU satırını belirlemek için eklediğim
        If x = 8 Then GcDgr = ", '" & CStr(CDate(rs.Fields(1))) & "'"
        If x = 11 Then GcDgr = ""
kodlar nedeniyle sıralama daha da önemli
Not: tablonuza "cinsiyet" alanı eklendi
    Dim con As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim sConn As String, sConn2 As String
    Dim degerler, cinsiyet, sSql, GcDgr As String
txtDosyaAdres = CurrentProject.Path & "\Bilgiler.xlsx" ' Buraya dosya adresi ve adı yazılacak
   
    degerler = ""

sSql = "select F2,F6,f15 from [Bilgiler1$] where f2 Is Not Null" '
    sConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & txtDosyaAdres
    sConn2 = ";Extended Properties=""Excel 12.0 Xml;HDR=No;Imex=1"";"
   
Set con = New ADODB.Connection
    con.Open sConn & sConn2

Set rs = New ADODB.Recordset
    rs.CursorLocation = adUseClient
    rs.Open sSql, con, adOpenKeyset 'rather use this so RecordCount works
   
    If rs.RecordCount = 0 Then Exit Sub
    rs.MoveLast
    rs.MoveFirst
    x = 0
  Do Until rs.EOF = True
  x = x + 1
        cinsiyet = cinsiyet & rs.Fields(2)
        GcDgr = ", '" & rs.Fields(1) & "'"
        If x = 8 Then GcDgr = ", '" & CStr(CDate(rs.Fields(1))) & "'" 'doğum tarihini tarihe çevirmek için
        If x = 11 Then GcDgr = "" 'NUFUSA KAYITLI OLDUĞU satırını pas geçmesi için
        degerler = degerler & GcDgr
    rs.MoveNext
Loop
    degerler = Mid(degerler & ", '" & cinsiyet & "'", 2)
   
sSql = " insert into [Veriler1] (seriNo, kimlikNo, soyad, adi, babaAd, anneAd, dogumYeri, dogumTarih, medeni, durumu, nufusil, nufusilce, nufusKoyMahalle,cinsiyet) " & _
                      " values (" & degerler & ")"
    CurrentDb.Execute sSql
    Set rs = Nothing
UYARI!!! tekrar hatırlatıyorum şablonda tek bir kaydırma yapılmamalı sütunlar asla ama asla değişmemeli
ve satır değişse bile satır sıralaması kesinlikle değişmemeli
Alan Adı ve Değerler aynı satırda olmalı[attachment=31234]
19/01/2020, 14:02

Myalim

(19/01/2020, 13:05)berduş yazdı: sayın @Myalim şablonu oturttum ama çalışmanız sorun çıkartmaya çok açık bir yapıda yani kullanıcı hatalarına çok açık o nedenle ne kadar düzgün çalışır bilemiyorum. eğer kullanıcı yanlışlıkla G sütunu yerine başka bir sütuna yazsa yada yanlışlıkla satır kaydırsa
mesela
Adı: berduş
Adı kelimesi C12 de iken Berduş kelimesi G12 olmalıyken eğer Adı kelimesi C12 ama Berduş yanlışlıkla G13e yazılırsa
yada exceldeki SERİ, TC KİMLİK NO, ...ADI,Baba Adı, Ana Adı..... alanlarının sıralaması değişirse çalışma yine hata verir, daha kötüsü hata vermez ama veriler yanlış alana kaydedilir .
özellikle doğum tarihi alanı ve tabloya eklenmeyecek olan NUFUSA KAYITLI OLDUĞU satırını belirlemek için eklediğim
        If x = 8 Then GcDgr = ", '" & CStr(CDate(rs.Fields(1))) & "'"
        If x = 11 Then GcDgr = ""
kodlar nedeniyle sıralama daha da önemli
Not: tablonuza "cinsiyet" alanı eklendi
    Dim con As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim sConn As String, sConn2 As String
    Dim degerler, cinsiyet, sSql, GcDgr As String
txtDosyaAdres = CurrentProject.Path & "\Bilgiler.xlsx" ' Buraya dosya adresi ve adı yazılacak
   
    degerler = ""

sSql = "select F2,F6,f15 from [Bilgiler1$] where f2 Is Not Null" '
    sConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & txtDosyaAdres
    sConn2 = ";Extended Properties=""Excel 12.0 Xml;HDR=No;Imex=1"";"
   
Set con = New ADODB.Connection
    con.Open sConn & sConn2

Set rs = New ADODB.Recordset
    rs.CursorLocation = adUseClient
    rs.Open sSql, con, adOpenKeyset 'rather use this so RecordCount works
   
    If rs.RecordCount = 0 Then Exit Sub
    rs.MoveLast
    rs.MoveFirst
    x = 0
  Do Until rs.EOF = True
  x = x + 1
        cinsiyet = cinsiyet & rs.Fields(2)
        GcDgr = ", '" & rs.Fields(1) & "'"
        If x = 8 Then GcDgr = ", '" & CStr(CDate(rs.Fields(1))) & "'" 'doğum tarihini tarihe çevirmek için
        If x = 11 Then GcDgr = "" 'NUFUSA KAYITLI OLDUĞU satırını pas geçmesi için
        degerler = degerler & GcDgr
    rs.MoveNext
Loop
    degerler = Mid(degerler & ", '" & cinsiyet & "'", 2)
   
sSql = " insert into [Veriler1] (seriNo, kimlikNo, soyad, adi, babaAd, anneAd, dogumYeri, dogumTarih, medeni, durumu, nufusil, nufusilce, nufusKoyMahalle,cinsiyet) " & _
                      " values (" & degerler & ")"
    CurrentDb.Execute sSql
    Set rs = Nothing
UYARI!!! tekrar hatırlatıyorum şablonda tek bir kaydırma yapılmamalı sütunlar asla ama asla değişmemeli
ve satır değişse bile satır sıralaması kesinlikle değişmemeli
Alan Adı ve Değerler aynı satırda olmalı
Hocam efsanesiniz gene harika çalışıyor son bir soru soruyorum lütfen mazur görün. Şimdi bu bilgileri aldığım sistemde sorgulayıp Excel dosyası halinde d ye her zaman farklı kaydetmek zorundayım, sanırım bu dosya değişken olduğundan acceste yeni kayıt alırken hata veriyor.Fakat Excel içindeki sayfa ismini değiştirmeden Bilgiler1 kısmına bir defa tıklayıp kapatınca problem olmadan alıyor. Sanırım problem Bilgiler Excel in değişken olması.
19/01/2020, 14:05

berduş

Açıkçası sorunuzu anlayamadım?
her defasında Excel dosyasının adı mı değişiyor?

Çalışma sisteminizi biraz daha ayrıntılı anlatır mısınız?
19/01/2020, 14:20

Myalim

(19/01/2020, 14:05)berduş yazdı: Açıkçası sorunuzu anlayamadım?
her defasında Excel dosyasının adı mı değişiyor?

Çalışma sisteminizi biraz daha ayrıntılı anlatır mısınız?
Hayır Hocam Excel sayfamızın ismi aynı kalıyor, örneğin A şahsını sorguladım bunu Excel olarak d ye kaydetim, sonrasında B şahsı sorguladım bu nu da aynı isim ile d ye üzerine yaz diyerek tekrar kaydettim, yani sayfa isimleri aynı fakat içindeki bilgiler değişiyor. Sizin kodunuz düzgün çalışıyor ama bu ikinci üzerine ya diye farklı kaydettiğim exxelden okuma yaparken hata veriyor, ikinci üzerine yaz diye kaydettiğim içine girip excelde sayfa adını değiştir diyorum herhangi bir işlem yapmıyorum kaydetip çıkıyorım acess o şekilde bilgi alıyor. 

Yani örneğimdeki Bilgiler Excel dosyası üzerine yeniden yazınca aynı isimde Access bu ikinci olayda bilgi çekmiyor
19/01/2020, 14:30

berduş

sisteminiz anlamadığım için kendi çalışmamı nasıl yaptığımı anlatayım
gönderdiğiniz Excel dosyasının kopyasını aldım
kopya Excel isimli dosyayı açtım
değişiklikler yaptım
Kopya exceli farklı kaydet dedim
orjinal dosya olarak kaydet dedim accessi kapatmadan yeniden Excel al dedim sorun çıkarmadı
19/01/2020, 14:34

Myalim

(19/01/2020, 14:30)berduş yazdı: sisteminiz anlamadığım için kendi çalışmamı nasıl yaptığımı anlatayım
gönderdiğiniz Excel dosyasının kopyasını aldım
kopya Excel isimli dosyayı açtım
değişiklikler yaptım
Kopya exceli farklı kaydet dedim
orjinal dosya olarak kaydet dedim accessi kapatmadan yeniden Excel al dedim sorun çıkarmadı
Evet hocam o şekilde sıkıntı çıkmıyor fakat şöyle izah edeyim, o exceli ordan komple silip çöp kutusuna, içerisinde farklı bilgilerin olduğu aynı isim ve yapıda tekrardan bi Excel dosyası oluşturuyoruz.  Bu sıfır oluşanda sıkıntı çıkıyor maalesef
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15