sheet isimleri

Katılım
4 Aralık 2005
Mesajlar
56
Merhaba,
üretim kartları adında bir folderım var ve bu folderın altında 100 e yakın exce dosyası var ve hemen hemen her sayfanın içinde 20'ye yakın sheet var.benim istediğim şey 2 adet combobox oluşturmak ve bunlardan 1.'sinde bu folder altındaki dosya isimlerini görmek. 2. combobox'da ise combo1 de seçilen dosyanın içindeki sheetlerin listesini görmek ve seçmek. bundan sonra ise o sheet içindeki bilgileri başka bir dosyaya aktaracağım. benim istediğim sadece bu 2 comboboxa nasıl kod yazmam gerektiği.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Ã?ncelikle dosya adlarını combobox1'e yüklemek için, aşağıdaki kodu userforma kopyalayın. "Üretim kartları" isimli klasörünüzün C nin altında olduğu kabul edilmiştir.

[vb:1:3ddba55ee0]Private Sub UserForm_Initialize()
Set klasor = CreateObject("Scripting.FileSystemObject").GetFolder("C:\üretim kartları").Files
For Each dosya In klasor
ComboBox1.AddItem dosya.Name
Next
End Sub[/vb:1:3ddba55ee0]

Seçilen dosyaya ait sayfa isimlerinin combobox2'ye yüklenmesi içinde combobox1'e aşağıdaki kodları kopyalayın.

[vb:1:3ddba55ee0]Private Sub ComboBox1_Click()
On Error Resume Next
ComboBox2.Clear
Set yeni = CreateObject("Excel.Application")
yeni.Workbooks.Open "C:\üretim kartları\" & ComboBox1.Value
say = yeni.Workbooks(ComboBox1.Value).Sheets.Count
For a = 1 To say
ComboBox2.AddItem yeni.Workbooks(ComboBox1.Value).Sheets(a).Name
Next
yeni.Quit
Set yeni = Nothing
End Sub
[/vb:1:3ddba55ee0]

Not:Yukarıdaki kodlarda her zamanki gibi değerli dostum Sn Haluk beyin çalışmalarından istifade edilmiştir.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Levent dostumun çözümüne alternatif olarak, ADO kullanılarak bir çözüm de aşağıdaki gibi olabilir...

Kod:
Const MyFolder As String = "C:\Üretim Kartlari"
'
Private Sub ComboBox1_Change()
    ComboBox2.Clear
    Call GetSheetNames(MyFolder & Application.PathSeparator & ComboBox1.Text)
End Sub
'
Private Sub UserForm_Initialize()
    Dim FSO As Object, TargetFolder As Object, FileCollection As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set TargetFolder = FSO.GetFolder(MyFolder)
    Set FileCollection = TargetFolder.Files
    For Each File In FileCollection
        ComboBox1.AddItem File.Name
    Next
    Set FileCollection = Nothing
    Set TargetFolder = Nothing
    Set FSO = Nothing
End Sub
'
Private Sub GetSheetNames(MyFile As String)
    Dim cnn As Object
    Dim cat As Object
    Dim tbl As Object
    
    Set cnn = CreateObject("ADODB.Connection")
    Set cat = CreateObject("ADOX.Catalog")
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
             "Data Source=" & MyFile & ";" & _
             "Extended Properties=Excel 8.0;"
    cat.ActiveConnection = cnn
    
    For Each tbl In cat.Tables
        MySh = Left$(tbl.Name, Len(tbl.Name) - 1)
        ComboBox2.AddItem MySh
    Next
    
    Set cat = Nothing
    cnn.Close
    Set cnn = Nothing
End Sub
Not: Sevgili Levent, lütfen beni mahcup etme.
 
Katılım
4 Aralık 2005
Mesajlar
56
merhaba,öncelikle her iki ustamızada teşekkür ederim.Sayın Leventm'in kodlarını denedim sorunsuz çalıştı. Sayın Haluk hocamıza ADO hakkında ufak bilgi vermesini istesem ayıp olur mu acaba :) Tam olarak ne işe yarar ?bilmediğim için o kodları denemedim:)
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
MOONROSE' Alıntı:
......
Tam olarak ne işe yarar ?bilmediğim için o kodları denemedim:)
Açıkçası ben, ilk önce kodları denemenizi beklerdim ...
 
Katılım
4 Aralık 2005
Mesajlar
56
sayın haluk, cevap yazdıktan sonraki gün kodları denemiştim. Siz o kodları gönderdiğinizde kod satırlarına baktığımda pek birşey anlamamıştım ve herhangi bir sorunda değiştiremem diye o an işimi kısa sürede çözmek için anladığım kodları kullanmıştım (bilgisayarımda son 1 aydır sorun var ve sürekli internete bağlanamıyorum) ama size terbiyesizlik yapmış olmuşum sanırım kusuruma bakmayın. ADO ile ilgili temel düzeyde bilgi nereden edinebilirim acaba.
 
Katılım
17 Nisan 2006
Mesajlar
228
Selamlar.
Yeni bir konu açmaktansa buradan sormayı tercih ettim.

Çalışma kitabımdaki sayfa isimlerini " son " isimli sayfadaki combobox1'e listeletip seçilen sayfa ismini " son " isimli sayfanın a1 hücresine yazdırıyorum.

Basit kod aynen şöyle:

Private Sub Worksheet_Activate()
For i = 1 To Worksheets.Count
ComboBox1.AddItem (Sheets(i).Name)
Next i
End Sub
Private Sub ComboBox1_Change()
[A1].Value = ComboBox1.Value
End Sub

Çalışma kitabımdak sayfa isimleride aynen şöyle:
01.02.2009
02.02.2009
03.02.2009
dosya03
dosya04
04.02.2009
05.02.2009
dosya05
06.02.2009
07.02.2009
08.02.2009
son

benim yapmak istediğim combobox listesine tüm sayfalar değilde

sadece tarih yazılı sayfalar combobox listesine eklensin. Çünkü diğer sayfalara combobox listesinde ihtiyacım yok.
 
Üst