ADO kullanarak boş satır silme ve sütun başlıklarını değiştirme

ErdalÖzdemir

Altın Üye
Katılım
12 Ağustos 2022
Mesajlar
91
Excel Vers. ve Dili
2013 TÜRKÇE
Altın Üyelik Bitiş Tarihi
21-09-2025
Merhaba arkadaşlar.

ADO kullanarak aşağıdaki örnek tablodaki Kurum_Kodu sütunu boş ise satırları silmek ve bazı sütun adlarını (Türü başlığını Kurum_Türü, Kurum_Adı başlığını ise Okul_Adı) olarak değiştirmek istiyorum.

Üzerinde çok uğraştım fakat bir sonuca ulaşamadım.

Yardımlarınız için şimdiden teşekkür ederim.
 

Ekli dosyalar

ErdalÖzdemir

Altın Üye
Katılım
12 Ağustos 2022
Mesajlar
91
Excel Vers. ve Dili
2013 TÜRKÇE
Altın Üyelik Bitiş Tarihi
21-09-2025
Akadaşlar yardımcı olacak yokmu
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,647
Excel Vers. ve Dili
Pro Plus 2021
Sayfa1 e listeleme yapacaktır.

Kod:
Sub test()
    Dim rs As Object, strSQL$, i
    With CreateObject("ADODB.Connection")
        Set rs = CreateObject("ADODB.Recordset")
        .Open "Provider=Microsoft.Ace.Oledb.12.0;Extended Properties='Excel 12.0;HDR=Yes';" & _
              "Data Source=" & ThisWorkbook.FullName

        strSQL = "SELECT KURUM_KODU,TİPİ,İLÇE,GENEL_MÜDÜRLÜK,TÜRÜ AS KURUM_TÜRÜ,KURUM_ADI AS OKUL_ADI,SINIF_1, " & _
                 "SINIF_ŞUBE,YAŞ,SINIF_2,EĞİTİM_KADEMESİ,ERKEK_ÖĞRENCİ,KIZ_ÖĞRENCİ,TOPLAM_ÖĞRENCİ,TOPLAM_ŞUBE " & _
                 "FROM [ÖĞRENCİ_SAYILARI$A5:O] WHERE NOT KURUM_KODU IS NULL "
        Set rs = .Execute(strSQL)
    End With

    With Sheets("Sayfa1")
        .Cells.ClearContents
        For i = 0 To rs.Fields.Count - 1
            .Cells(5, i + 1).Value = rs.Fields(i).Name
        Next i
        .Range("A6").CopyFromRecordset rs
        .Range("A5").CurrentRegion.Columns.AutoFit
    End With
    Set rs = Nothing
End Sub
 

ErdalÖzdemir

Altın Üye
Katılım
12 Ağustos 2022
Mesajlar
91
Excel Vers. ve Dili
2013 TÜRKÇE
Altın Üyelik Bitiş Tarihi
21-09-2025
Hocam teşekkür ederim
Başka sayfaya atmadan dosya üzerinde işlem yapıp kaydedip çıkılmaz mı
 
Katılım
2 Temmuz 2014
Mesajlar
160
Excel Vers. ve Dili
2021 Türkçe, 64bit
bildiğim kadarıyla ADO kullanarak excel sayfasındaki veriler silinemiyor, en fazla ilgili satırdaki tüm veriler UPDATE sorgusu ile boşaltılabiliyor. boş satırları silebilmek için
1 - ilgili sütundaki verinin diziye aktarılıp sondan başa doğru gidilerek o hücre boş ise silinmesi sağlanabilir, yada
2 - vba kodları ile veriler filtrelenerek görünen satırların silinmesi sağlanabilir
 

ErdalÖzdemir

Altın Üye
Katılım
12 Ağustos 2022
Mesajlar
91
Excel Vers. ve Dili
2013 TÜRKÇE
Altın Üyelik Bitiş Tarihi
21-09-2025
Akadaşlar yardımcı olacak yok mu
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,354
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Merhaba;

Excel dosyası Sql yürütülebiliyor olmasına rağmen gerçek anlamda bir veritabanı olmadığından satır silmek için "DELETE" komutu desteklemez. Her INSERT komutundan sonra satır sayısı sürekli büyür. Dosyayı fiziksel olarak açıp satırları elle silmek zorundasınız.

Kolon adı belki ADOX kütüphanesi ile değiştirilebilir olsa da, böyle bi değişikliğe sık ihtiyaç duyulmadığından gerekliliği tartışılır...

.
 

ErdalÖzdemir

Altın Üye
Katılım
12 Ağustos 2022
Mesajlar
91
Excel Vers. ve Dili
2013 TÜRKÇE
Altın Üyelik Bitiş Tarihi
21-09-2025
Hocam, açıklamalarınız için teşekkür ederim.

Yaklaşık 50 bin satırlık birden çok dosyada VBA ile başlıkları değeştirip boş satırları silip bu dosyaları birleştiriyorum. Fakat çok yavaş olduğundan ADO ile bunu daha hızlı yapabilirim diye düşünmüştüm.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,272
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
100 satırlık 3-5 dosya paylaşarak ulaşmak nihai sonucu örneklerseniz belki hızlı sonuçlar alınabilecek yöntem üretilebilir.
 
Üst