Bu dosya, bir listedeki tekrarlayan kayıtları ADO (ActiveX Data Objects) bağlantısı ve SQL sorgusuyla ayıklamayı gösteren makrolu bir örnektir. Sayfa1'in A sütunundaki veriler taranır, yalnızca bir kez geçen kayıtlar E sütununa listelenir ve işlemin süresi ekranda gösterilir.
Önemli: Dosya makro içerir (.xlsm). Açarken makroları etkinleştirmeniz gerekir.
Önemli: Dosya makro içerir (.xlsm). Açarken makroları etkinleştirmeniz gerekir.
Dosyanın içeriği
- Sayfa1: A1:C52 aralığında veri bulunur. A sütununda 905052004578 ve 905052021100 gibi telefon numarası biçiminde kayıtlar yer alır. Sonuçlar aynı sayfada E1 hücresinden itibaren listelenir.
- Module1: user adlı makroyu barındıran VBA modülüdür (17 satır).
Makrolar
- user: Çalışma kitabının kendisine Microsoft.ACE.OLEDB.12.0 sağlayıcısıyla bağlanır ve Sayfa1 üzerinde GROUP BY ve HAVING COUNT(f1)=1 koşullu bir SQL sorgusu çalıştırır. Başlık satırı olmadığı için bağlantıda hdr=no kullanılır ve ilk sütun f1 olarak adlandırılır. Böylece A sütununda yalnızca bir kez geçen kayıtlar seçilir; birden fazla geçen kayıtlar sonuçta yer almaz. Sonuç CopyFromRecordset yöntemiyle E1 hücresinden itibaren yazılır.
- Makro başlangıç zamanını C1 hücresine, bitiş zamanını C2 hücresine yazar ve geçen süreyi saniye olarak bir mesaj kutusunda gösterir.
Nasıl kullanılır
- Dosyayı açın ve makroları etkinleştirin.
- Sayfa1'in A sütununa kontrol edilecek kayıtları girin veya mevcut verileri kendi listenizle değiştirin.
- Alt+F8 tuşlarıyla user makrosunu seçip çalıştırın.
- Yalnızca bir kez geçen kayıtlar E sütununda listelenir; işlem süresi mesaj kutusunda görüntülenir.
- Makro ACE sağlayıcısını kullandığı için bilgisayarda Microsoft Access Database Engine bileşeninin kurulu olması gerekir. Kod, VBA düzenleyicisinde ADODB başvurusunu da kullandığından Tools > References bölümünden Microsoft ActiveX Data Objects kitaplığı seçili olmalıdır.
- Makro, çalışma kitabının diskteki kayıtlı halini sorguladığı için işlemden önce dosyanın kaydedilmiş olması gerekir.