Userformda dosya bulma ve açma

Katılım
28 Nisan 2005
Mesajlar
252
Excel Vers. ve Dili
Excel 2010 Türkçe
Merhaba

Benim isteğim C:\Data klasöründe olan dosyaların alfabetik sırayla ListBox'a yazılması ve Listbox'taki dosyalardan herhangi birini çift tıkladığım zaman TextBox'a yazması.

Birde eğer mümkünse textBox'a dosya ismi yazmaya başladığımda otomatik olarak listBox'ı yenilemesi.
Daha açıklayıcı olması için yapmak istediğim ekteki dosyadadır.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,056
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Dosya isimlerini listboxa almak için aşağıdaki kodu deneyin.

[vb:1:37164a3071]Private Sub CommandButton1_Click()
For Each dosya In CreateObject("Scripting.FileSystemObject").GetFolder("C:\data").Files
c = c + 1
Cells(c, 1) = dosya.Name
Next
Range("A1:A" & [a65536].End(xlUp).Row).Sort Key1:=[a1]
ListBox1.RowSource = "sayfa1!a1:a" & [a65536].End(xlUp).Row
End Sub[/vb:1:37164a3071]

listboxtaki seçilen dosyanın textboxa yazılması içinde listboxa aşağıdaki kodu yazın.

[vb:1:37164a3071]Private Sub ListBox1_Click()
TextBox1 = ListBox1.Value
End Sub[/vb:1:37164a3071]

son sorunuzdan neyi kasdettiğinizi anlayamadım.
 
Katılım
28 Nisan 2005
Mesajlar
252
Excel Vers. ve Dili
Excel 2010 Türkçe
Merhaba leventm
Yukardaki kodları çalıştırdım ama ikinci istediğim özellik
eğer mümkünse textBox'a dosya ismi yazmaya başladığımda otomatik olarak listBox'ı yenilemesi.
olayını yapabilirmiyiz.
Ben excelin yardım menüsünden aşağıdaki kodu kullandım ama bu dosya ismini full olarak (path'i ile birlikte) A sütununa yazıyor. Ben bunun sadece dosya ismini yazacak hale çeviremedim. Yardımcı olurmusunuz?
Kod:
Sub ara()
Set fs = Application.FileSearch
With fs
    .LookIn = "C:\DATA"
    .SearchSubFolders = True
    .FileType = msoFileTypeExcelWorkbooks
    .Filename = "9052*"
    If .Execute() > 0 Then
        MsgBox "There were " & .FoundFiles.Count & _
         " file(s) found."
        For i = 1 To .FoundFiles.Count
            Cells(i, 1) = .FoundFiles(i)
        Next i
    Else
        MsgBox "There were no files found."
    End If
End With
End Sub
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,056
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Bu benim bilgi sahibi olduğu bir kod yapısı değil ama aşağıdaki gibi deneyin. muhtemelen çok daha pratik bir çözümüde vardır.

[vb:1:e6750a4f4b]Sub ara()
Set fs = Application.FileSearch
With fs
.LookIn = "C:\DATA"
.SearchSubFolders = True
.FileType = msoFileTypeExcelWorkbooks
.Filename = "9052*"
If .Execute() > 0 Then
MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
Cells(i, 1) = Mid(.FoundFiles(i),9, Len(.FoundFiles(i)))
Next i
Else
MsgBox "There were no files found."
End If
End With
End Sub
[/vb:1:e6750a4f4b]
 
Katılım
28 Nisan 2005
Mesajlar
252
Excel Vers. ve Dili
Excel 2010 Türkçe
teşekkürler leventm
birazcık yavaş çalışıyor ama iyi oldu. :icelim:
 
Üst