• DİKKAT

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

Txt. Dosyasından veri alma

Katılım
13 Ocak 2010
Mesajlar
46
Excel Vers. ve Dili
Office2007
Merhaba,
Mesajım ekinde bulunan Excel çalışma kitabım örneğinde, kapalı txt. dosyasından verileri alıyorum.
Şöyleki,
Dosyada görüleceği üzere,
UserForm2-ComboBox1'den klasör seçilip,
ListBox1'de ilgili klasördeki txt dosyaları listelendikten sonra,
seçilen bir txt dosyasındaki verileri VERİ Al butonu ile getiriyorum.
Ancak;
Asıl problem,
yukarıdaki işlemi tekrar yapmak istediğim zaman, ( ilk seferde hemen veriler alınıyor )
yani ListBox'dan farklı bir txt dosyası seçip VERİ AL butonuna komut verdiğim zaman kasılma oluyor,
daha doğrusu uzun bir süre bekliyor.

Problemin kaynağını çözemedim.
Bu konuda değerli hocalarım ve arkadaşlarım tarafından yardımcı olunursa memnun olurum.
Çalışma dosyam ve C:\ sürücüsünde bulunan klasörüm ektedir.
Teşekkür ederim.
Saygılarımla.
 

Ekli dosyalar

İlk verileri okuduktan sonra listbox2 temizlenmediği için oluyor.

Verileri al butonun ilk satırına ListBox2.RowSource = "" kodunu ilave edin sorunsuz çalışıyor.
 
fireman94 haklı. Ben de buton kodunu biraz değiştirdim. Kolay gelsin.

Kod:
Private Sub CommandButton1_Click()
Dim i As Long, deg As String, sat As Long, deg2, k As Byte, dosya
ListBox2.Clear
ListBox2.ColumnCount = 8
ListBox2.ColumnWidths = "0,20,0,80,80,80,80,80"
'ListBox2.RowSource = "ARŞİV!A6:H" & ActiveWorkbook.Sheets("ARŞİV").Cells(65536, "A").End(xlUp).Row
sat = 5
dosya = "C:\KAYITLAR\İSİMLER\ARŞİV\" & ComboBox1.Text & "\" & ListBox1.Value & ".txt"
If dosya = False Then Exit Sub
Application.ScreenUpdating = False
Open (dosya) For Input As #1
Do While Not EOF(1)
    Line Input #1, deg
    sat = sat + 1
    deg2 = Split(deg, vbTab)
    k = 0
    ListBox2.AddItem
    For i = 0 To UBound(deg2)
        k = k + 1
        ActiveWorkbook.Sheets("ARŞİV").Cells(sat, k).Value = deg2(i)
        ListBox2.List(sat - 6, k - 1) = deg2(i)
    Next i
Loop
Close #1
Application.ScreenUpdating = True

'metin olarak saklanan sayılar için
For i = 6 To ActiveWorkbook.Sheets("ARŞİV").Cells(1, "A").End(xlDown).Row
ActiveWorkbook.Sheets("ARŞİV").Range("F" & i).Value = ActiveWorkbook.Sheets("ARŞİV").Range("F" & i).Value * 1
ActiveWorkbook.Sheets("ARŞİV").Range("G" & i).Value = ActiveWorkbook.Sheets("ARŞİV").Range("G" & i).Value * 1
ActiveWorkbook.Sheets("ARŞİV").Range("H" & i).Value = ActiveWorkbook.Sheets("ARŞİV").Range("H" & i).Value * 1
Next i
'F-G-H sütunları sayı formatı için
ActiveWorkbook.Sheets("ARŞİV").Range("F6:H65536").NumberFormat = "#,##0.00"
'------------------------------------------------
'
'ListBox2.ColumnCount = 8
'ListBox2.ColumnWidths = "0,20,0,80,80,80,80,80"
'ListBox2.RowSource = "ARŞİV!A6:H" & ActiveWorkbook.Sheets("ARŞİV").Cells(65536, "A").End(xlUp).Row
End Sub
 
Değerli freman64
Değerli dentex

Haklısınız, asıl dosyada uygulama yaptım problem çözüldü.

Kod:
ListBox2.RowSource = Empty

şeklinde denemiştim ama kodların en başına uygulamam gerekiyormuş.

Konu ile ilgilendiğiniz için teşekkür ederim.

Saygılarımla.
 
Sn Excelexcellent,
Çalışmanızın tamamlanmış halini yüklerseniz faydalanacağımı sanıyorum.
Selamlar,
 
Geri
Üst