Türkiye Geneli Mahalle ve Posta Kodu Listesini Excel Formunda Hızlıca Arayın
Bu dosya, Türkiye'deki il, ilçe, semt ve mahalle adlarını posta kodlarıyla birlikte bir Access veritabanında tutar ve bu kayıtları Excel içinde açılan bir sorgu formunda listeler. Veriler çalışma sayfasına yüklenmez; makro, ADO bağlantısıyla Access dosyasını okur ve sonuçları bir liste kutusunda gösterir. Arama kutularına yazılan her harfte liste yeniden süzülür, bulunan kayıtlar istenirse tek tıklamayla Excel sayfasına aktarılır. Dosya hem adres ve posta kodu bulmak isteyen kullanıcılar için pratik bir sorgu aracı, hem de Excel VBA ile Access veritabanına bağlanmayı öğrenmek isteyenler için çalışan bir örnektir.Dosya Ne İşe Yarar
Adres kaydı tutan, kargo veya fatura bilgisi hazırlayan, müşteri listesindeki posta kodlarını kontrol eden kullanıcıların sık ihtiyaç duyduğu bilgi, bir mahallenin hangi semt ve ilçeye bağlı olduğu ve posta kodunun ne olduğudur. Dosya bu bilgiyi 51.797 kayıtlık bir tablodan arar. Tabloda 81 ilin yanı sıra KKTC'ye ait 267 kayıt da bulunur; il ve ilçe çiftlerinin sayısı 975'tir. Örneğin Ankara için 1.457, İzmir için 1.377, İstanbul için 937 ve Muğla için 623 kayıt listelenir.Arama, kelimenin tamamının yazılmasını gerektirmez. Yazılan metni içeren bütün kayıtlar bulunur; bu nedenle ilçe kutusuna yalnızca kadık yazmak bile Kadıköy kayıtlarını getirir. Arama büyük ve küçük harfe duyarlı değildir ve Türkçe harflerle doğru çalışır: istanbul, İstanbul ve İSTANBUL yazımları aynı sonucu verir. Birden fazla kutu doldurulduğunda koşullar birlikte uygulanır; il kutusuna istanbul, ilçe kutusuna kadıköy yazıldığında yalnızca Kadıköy'e ait 21 mahalle kalır.
Sayfa Sayfa İçerik
İndirilen ZIP arşivinde dört dosya bulunur: sorgu formunu içeren makrolu Excel çalışma kitabı, kayıtları tutan sehirler-tr.accdb Access veritabanı, kurulum adımlarını özetleyen Kurulum.txt ve telif bilgisini içeren Copyright.txt. Excel dosyası ile Access dosyası aynı klasörde bulunmalıdır; makro veritabanını, çalışma kitabının bulunduğu klasörde göreli yol ile arar.Şerit Sekmesi
Çalışma kitabı açıldığında şeritte Giriş sekmesinin önünde İL - İLÇE - SEMT - MAHALLE adlı bir sekme görünür. Bu sekmenin Tanımlar grubundaki Hızlı Sorgula düğmesi sorgu formunu açar. Sekme çalışma kitabına aittir; dosya kapatıldığında şeritten de kalkar ve Excel'in genel ayarlarını değiştirmez.Sorgu Formu
Formun üst kısmında yan yana beş arama kutusu vardır. Kutular, altlarındaki liste sütunlarıyla aynı sırayı izler: il, ilçe, semt, mahalle ve posta kodu. Ortadaki liste kutusunun ilk satırı sütun başlıklarını gösterir, altındaki satırlarda kayıtlar yer alır. Form ilk açıldığında bütün kayıtlar il adına göre sıralı olarak yüklenir. Sağ alttaki bilgi satırı, o anda listelenen kayıt sayısını Toplam : 51797 adet kayıt listelenmiştir biçiminde gösterir. Sol alttaki Sayfaya Aktar düğmesi, listede görünen kayıtları çalışma sayfasına yazar.rapor Sayfası
Çalışma kitabındaki tek sayfa rapor sayfasıdır. Sayfaya Aktar düğmesine basıldığında bu sayfa temizlenir ve listenin başlık satırı dâhil bütün satırları A ile E sütunlarına yazılır. Başlık satırı kalın yazılır, il, ilçe, semt ve mahalle sütunları sola, posta kodu sütunu ortaya hizalanır, sütun genişlikleri içeriğe göre ayarlanır. Posta kodu sütunu metin biçimindedir; bu sayede 01720 gibi sıfırla başlayan kodlar baştaki sıfırı kaybetmeden aktarılır. Çalışma kitabı her açılışta rapor sayfasını temizler; saklanması gereken sonuçların başka bir çalışma kitabına kopyalanması gerekir.Kullanılan Formüller ve Hesaplama Mantığı
Dosyada çalışma sayfası formülü bulunmaz; bütün işlem VBA ile yapılır. İşleyiş üç adımdan oluşur: veritabanına bağlanmak, kayıtları okumak ve yazılan ölçütlere göre süzmek.Access Bağlantısı
baglanti modülündeki Baglanti_Yap işlevi, Microsoft ACE OLEDB 12.0 sağlayıcısıyla bir ADO bağlantısı açar. Veri kaynağı, çalışma kitabının klasör yolu ile sehirler-tr.accdb dosya adının birleştirilmesiyle oluşturulur; dosya içinde sabit bir sürücü veya klasör yolu yoktur. Bağlantı açılmadan önce veritabanı dosyasının varlığı kontrol edilir. Dosya bulunamazsa veya sağlayıcı yüklü değilse Excel hata ayıklama penceresi açılmaz; nedenini ve yapılması gerekeni anlatan bir mesaj gösterilir.Kayıtların Okunması
Form etkinleştiğinde SELECT il, ilce, semt, mahalle, posta_kodu FROM pk ORDER BY il sorgusu çalışır. Sonuç bir ADO kayıt kümesine alınır ve GetRows yöntemiyle tek seferde liste kutusuna aktarılır. Liste kutusunun sütun genişlikleri beş sütun için ayrı ayrı tanımlanmıştır, ilk satıra sütun başlıkları eklenir.Süzme Mantığı
Arama kutularından birinde değişiklik olduğunda Personel_Filtrele yordamı çalışır. Yordam, dolu olan her kutu için alan Like '%metin%' biçiminde bir koşul üretir ve bu koşulları And ile birleştirerek kayıt kümesinin Filter özelliğine atar. Veritabanına yeniden sorgu gönderilmez; süzme, bellekteki kayıt kümesi üzerinde yapılır ve liste kutusu sonuçla yeniden doldurulur. Hiçbir kayıt eşleşmezse liste boşaltılır ve bilgi satırında 0 kayıt görünür. Aranan metindeki tek tırnak karakteri ifadeye güvenli biçimde eklenir; bu nedenle kesme işareti içeren bir arama hata üretmez, yalnızca eşleşen kayıt yoksa boş sonuç verir.Öne Çıkan Özellikler
Bu sürümde veritabanında ve makroda kullanıcıyı doğrudan etkileyen sorunlar giderilmiştir. Önceki veritabanında Ğ ve Ş harflerinin her birinin ardından görünmeyen bir denetim karakteri bulunuyordu. Bu karakter ekranda fark edilmediği halde aramayı bozuyordu: Muğla, Beşiktaş veya Koşuyolu gibi Ğ ya da Ş içeren bir ad yazıldığında hiçbir kayıt bulunmuyor, aynı karakter Sayfaya Aktar ile çalışma sayfasına da taşınıyordu. Bu karakter 25.973 kayıttaki 35.474 alandan temizlenmiş, Düzce'deki bir mahalle adında bozuk kodlanmış ü harfleri düzeltilerek KÜLTÜR MAH. yazılmıştır. Kayıt sayısı, il ve ilçe sayıları ve posta kodları değişmemiştir.Makroda da dört düzeltme yapılmıştır. Hiç kayıt listelenmezken Sayfaya Aktar düğmesine basıldığında oluşan çalışma zamanı hatası yerine aktarılacak kayıt bulunmadığını belirten bir bilgi mesajı gösterilir. Arama kutusuna tek tırnak yazıldığında oluşan süzme hatası giderilmiştir. Veritabanı dosyası bulunamadığında veya ACE sağlayıcısı yüklü olmadığında açıklayıcı bir uyarı verilir ve form bilgi satırında bağlantının kurulamadığını gösterir. Form kapatıldığında kayıt kümesi ve Access bağlantısı kapatılır; böylece veritabanı dosyası kilitli kalmaz.
Dosya özellikleri ExcelDepo olarak güncellenmiş, çalışma kitabına kaydedilmiş eski yerel klasör yolu kaldırılmıştır. Bu değişikliklerin hiçbiri bir özelliği kaldırmaz: şerit sekmesi, form düzeni, beş arama kutusu, sıralama, sayfaya aktarma ve açılışta rapor sayfasını temizleme davranışı korunmuştur. Revize edilen VBA projesi Visual Basic düzenleyicisinde hatasız derlenir.
Nasıl Kullanılır
Kurulum
ZIP arşivindeki dosyaların tamamı bilgisayarda yerel bir klasöre birlikte çıkarılmalıdır. Excel dosyası arşivin içinden doğrudan açılırsa veritabanı aynı klasörde bulunamaz. sehirler-tr.accdb dosyasının adı değiştirilmemelidir. Excel dosyası açıldığında makroların etkinleştirilmesi gerekir. Bağlantı Microsoft ACE OLEDB 12.0 sağlayıcısıyla kurulur; Microsoft Access programının kurulu olması gerekmez. Sağlayıcı bulunamadığı bildirilirse, Office ile aynı bit sürümündeki, yani 32 bit Office için 32 bit, 64 bit Office için 64 bit Microsoft Access Database Engine kurulmalıdır. Dosya, ADO ve ACE sağlayıcısı kullandığı için Windows üzerindeki masaüstü Excel ile çalışır.Sorgulama
Şeritteki İL - İLÇE - SEMT - MAHALLE sekmesinde Hızlı Sorgula düğmesine basılır. Form açılınca bütün kayıtlar listelenir. Aranan bilgi ilgili kutuya yazılır; liste her harfte güncellenir. Örneğin bir mahallenin posta kodu aranıyorsa il ve mahalle kutularının doldurulması yeterlidir. Bir posta kodunun hangi mahalleye ait olduğu aranıyorsa yalnızca posta kodu kutusu kullanılabilir; 34710 yazıldığında İstanbul Kadıköy Caferağa kaydı bulunur. Kutulardaki metin silindiğinde liste yeniden bütün kayıtları gösterir.Sonuçları Sayfaya Almak
Liste istenen kayıtlara indirildikten sonra Sayfaya Aktar düğmesine basılır. Kayıtlar rapor sayfasına başlıklarıyla birlikte yazılır ve sayfa etkin hale gelir. Buradaki liste sıralanabilir, süzülebilir veya başka bir çalışma kitabına kopyalanabilir. Form kapatıldığında veritabanı bağlantısı da kapanır.Kimler İçin Uygun
Dosya; müşteri ve tedarikçi adreslerini düzenleyen satış ve muhasebe birimleri, gönderi listesi hazırlayan lojistik ekipleri, adres verisindeki ilçe ve posta kodu bilgisini kontrol etmek isteyen veri giriş personeli için uygundur. Veriler Access dosyasında tutulduğu için Excel dosyası küçük kalır ve elli bin satırı aşan bir liste çalışma sayfasını doldurmadan sorgulanabilir.Excel VBA öğrenen kullanıcılar için de dosya; ADO ile Access veritabanına bağlanma, SQL sorgusunu kayıt kümesine alma, GetRows ile liste kutusunu doldurma, Filter özelliğiyle bellekte süzme, form olaylarıyla anlık arama ve özel şerit sekmesinden makro çalıştırma konularını küçük ve okunaklı bir kod üzerinde gösterir. Kod, başka bir Access tablosunu sorgulamak üzere sorgu metni ve sütun başlıkları değiştirilerek uyarlanabilir.
Veritabanındaki adlar ve posta kodları dosyanın hazırlandığı tarihteki kayıtlara dayanır; bazı ilçe adlarında Aladağ (Karsantı) ve Mersin (İçel) örneklerinde olduğu gibi eski adlar parantez içinde yer alır. Resmî yazışma veya gönderi için kullanılacak posta kodlarının güncel resmî kaynaktan doğrulanması önerilir.