• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Kapalı Çalışma Kitabındaki Çalışma Sayfalarını ComboBoxa getirip açmak.

Hakan ERDOST

Destek Ekibi
Destek Ekibi
Katılım
12 Eylül 2004
Mesajlar
885
Excel Vers. ve Dili
Excel 2019 Türkçe (Ev)
Excel 2013 Türkçe (Okul)
Kapalı Çalışma Kitabındaki Çalışma Sayfalarını ComboBoxa getirip açmak.

Uzunca bir başlık oldu ama maruzatı ifade açısından önemli olsa gerek.Efendim herkese öncelikle iyi akşamlar.Niyetim oluppta yapamadığım şu:Ana bir çalışma kitabı üzerinde çalışan bir userformum var ben bunun üzerine ekledğim bir combobox aracılığı ile c:\aylık çalışmalar\aile\017a.xls çalışma kitabındaki tüm çalışma sayfalarını listelemek istiyorum.Doğal olarak sayfa seçildiğinde o çalışma sayfasının açılmasını istiyorum.Umarım anlatabildim.
 
Son düzenleme:
Yanıt gelmeyince konu başlığını değişeyim dedim.Dünden beri forumu tarıyorum ama konuya ilişkin bir örnek bulamadım.Umarım yardımcı olacak bir arkadaş çıkar.
 
Sayın leventm her zamanki gibi ilginize teşekkürler.Ancak olmuyor şöyle ki sayfadaki butona tıkladığımda hata verip direk çalışma kitabını açıyor.oysa istediğim bu değildi .Ben UserFormun görüntiilenmesini ,userform üzerindeki comboboxta çalışma kitabındaki sayfaların listelenmesini istiyorum.Buradan yani comboboxtan setiğim sayfanın da açılmasını istiyordum.teşekkürler.
 
Yok mu arkadaşlar bu soruna bir yanıt.
 
Sayın leventm her zamanki gibi ilginize teşekkürler.Ancak olmuyor şöyle ki sayfadaki butona tıkladığımda hata verip direk çalışma kitabını açıyor.oysa istediğim bu değildi .Ben UserFormun görüntiilenmesini ,userform üzerindeki comboboxta çalışma kitabındaki sayfaların listelenmesini istiyorum.Buradan yani comboboxtan setiğim sayfanın da açılmasını istiyordum.teşekkürler.

Zaten yukarıdaki eklediğim dosya bu işlemi yapıyor. Dosya içindeki notlarıda dikkate alınız. Sadece butona userformu açan kodu bağlamayı atlamışım, onuda düzelterek eki yeniledim. Tekrar inceleyin.
 
Dosyayı açmadan da tablo isimleri listelenebilir.

Kod:
Sub Tablolar()
Dim cat As Object, t As Object, i As Integer

Set cn = CreateObject("ADODB.Connection")
Set cat = CreateObject("ADOX.Catalog")

cn.Open _
"Driver={Microsoft Excel Driver (*.xls)};Dbq=" & ThisWorkbook.Path & "\aaa.xls;"
cat.ActiveConnection = cn
    
    For Each t In cat.Tables
        i = i + 1
        Cells(i, 1) = Left$(t.Name, Len(t.Name) - 1)
    Next

Set t = Nothing
Set cat = Nothing

End Sub
 
Arkadaşlar ilginize teşekkürler ancakişin içinden çıkamadığım için çalışmamın ana çalışma kitabını gönderiyorum.Yapmak istediğimi anlatmaya çalıştım .İlglenecek olanlara şimdiden teşekkürler.
 
Dosyayı açmadan da tablo isimleri listelenebilir.

Kod:
Sub Tablolar()
Dim cat As Object, t As Object, i As Integer

Set cn = CreateObject("ADODB.Connection")
Set cat = CreateObject("ADOX.Catalog")

cn.Open _
"Driver={Microsoft Excel Driver (*.xls)};Dbq=" & ThisWorkbook.Path & "\aaa.xls;"
cat.ActiveConnection = cn
    
    For Each t In cat.Tables
        i = i + 1
        Cells(i, 1) = Left$(t.Name, Len(t.Name) - 1)
    Next

Set t = Nothing
Set cat = Nothing

End Sub
Bu durumda sayfada ad ile tanımlanmış alan ismi ve belirlenmiş yazdırma alanlarıda sayfa ismi olarak listeleniyor.
 
Merhaba,
Sayfa isimlerinin sağdan 1. karakteri "$" işretidir. Buna göre sınama yapılabilir.
 
Sayın anemos.Tamamdır O zaman olur.
Teşekkür ederim.

Excel gerçek anlamda veritabanı olsaydı "If t.Type = "TABLE" Then" şeklinde sistem tabloları dışındaki (kullanıcı tabloları) listelemek mümkündü.

Excelde durum farklı olduğundan bu şekilde kullanmak daha uygun olur Evren Bey.

Kod:
Sub Tablolar()
Dim cat As Object, t As Object, i As Integer

Set cn = CreateObject("ADODB.Connection")
Set cat = CreateObject("ADOX.Catalog")

cn.Open _
"Driver={Microsoft Excel Driver (*.xls)};Dbq=c:\a.xls;"
cat.ActiveConnection = cn

' If t.Type = "TABLE" Then alan isimlerini döndürür.

    For Each t In cat.Tables
        If t.Type = "SYSTEM TABLE" Then
            i = i + 1
            Cells(i, 1) = Left$(t.Name, Len(t.Name) - 1)
        End If
    Next

Set t = Nothing
Set cat = Nothing

End Sub
 
Sayın anemos teşekkür ederim.
Ben sonundaki "$" işaretini sorgulayıp listeleme yapabilmiştim.
Bu şimdi dağada iyi oldu.:)
 
Sayın Evren Gizlen ve ustalarım ekte bulunan dosyayı inceleyerek bana yardımcı olurmusunuz.
 
Geri
Üst