• DİKKAT

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

Text dosyasından veri almak

  • Konbuyu başlatan Konbuyu başlatan k0081
  • Başlangıç tarihi Başlangıç tarihi
Merhaba,

Aşağıdaki kodları dener misiniz, Dosya adını ve yolunu değiştirmeyi unutmayınız.

Kod:
Sub VeriGetir()
    
    Dim i       As Long
    Dim j       As Long
    Dim Dosya   As String
    Dim Satir   As String
    Dim s
    
    Dosya = "D:\liste1.txt"
    i = 1
    j = 1
    Open Dosya For Input As #1
    While Not EOF(1)
        Line Input #1, Satir
        Satir = Application.WorksheetFunction.Trim(Satir)
        
        If Len(Satir) = 0 Then
            Line Input #1, Satir
            Do
                Satir = Application.WorksheetFunction.Trim(Satir)
            Loop Until Len(Satir) > 0
        End If
        s = Split(Satir, " ")
        If Len(Satir) > 0 And UBound(s) = 5 And Not s(0) = "Size" Then
            i = i + 1
            Cells(i, "B") = s(0)
            Cells(i, "C") = s(3)
            Cells(i, "D") = s(2)
        Else
            j = j + 1
            Cells(j, "E") = Satir
        End If
    Wend
    
    Close #1
    
End Sub
 
Necdet Yeşertener;
Hocam çok teşekkürler, tamamdır..
 
Güle güle kullanınız.
 
hocam az önce bir test daha yaptım.. iki tane aynı isimde malzeme varsa, sadece birini alıyor..

örneğin : IPE200

Tabloya sadece birini ekliyor..

Merhaba,

Ben sadece başlık ve veri olmayan satırların elenmesini sağladım. Benzer olanlarını alma diye bir komut yok.

text dosyasındaki satır adedini verirseniz uygun olduğumda incelerim.
 
Merhaba,

Ben sadece başlık ve veri olmayan satırların elenmesini sağladım. Benzer olanlarını alma diye bir komut yok.

text dosyasındaki satır adedini verirseniz uygun olduğumda incelerim.

hocam bu örnek dosyada excel tablosuna alınması gereken satır sayısı = 49 dur. Teşekkürler..
 
Merhaba,

Text dosyasında satır olabilecek verilere bakılırsa durum sizin dediğiniz gibi excele aktarılacak kayıt sayışa 49 ama görüntü öyle. Bazı 2 satır tek satır gibi, o yüzden aradan kaçırıyoruz.

Text dosyası düzenli değil yani.
 
Necdet Yeşertener;

evet. hocam tabloya aldığım değer sayısı : 36.. olması gereken 49..

anlayamadığım nokta ; diğer veriler düzgün bi şekilde geliyorda, acaba nerde ne oluyor ki, kod sadece 36 satır ekleme yapıyor..
********************************
hocam bişey farkettim bu kısımdan kaynaklanıyor olabilir mi ? --> 49-36 = 13

dosyadaki boş yani daha doğrusu, excel tablosunda istenmeyen satırların sayısı da 13.

mavi renkte belirttiğim kısımlar:
Kod:
 CHS114.3*3      S235JR      8        3372          1.2        27.2
    ----------------------------------------------------------------------
                                        [COLOR="Blue"]693738        247.2      5588.2[/COLOR]
 
Son düzenleme:
Merhaba,

Kodlara yeni kontroller koydum.

Elediğim satırları da E sütununa yazdırdım, doğru eledim mi diye.

İlk mesajımdan kodları alıp deneyiniz.
 
Hocam,

Çalışma çok güzel olmuş elinize sağlık.

Acaba liste1.txt sabit olmasa almak istediğimiz *.txt yi sorabilir mi ?

Tabiki sorabilir. Dosya işlemleri ile ilgili forumda çok örnek var. Onları inceleyebilirsiniz.
 
Necdet Yeşertener;

Hocam çok teşekkür ediyorum,, tamamdır.. Elinize Yüreğinize sağlık.. Saygılar..
 
Güle güle kullanınız.

hocam bu kodlamaya bir ekleme yapabilirmiyiz

şöyleki : malzeme isimleri ve uzunlukları aynı olan değerleri toplatıp o şekilde excel tablosuna almak..

örnek :

Kod:
CHS114.3*3      S235JR      8        7632          2.7        61.3
     [COLOR="red"]CHS114.3*3[/COLOR]      S235JR      [COLOR="red"]8[/COLOR]        [COLOR="red"]7568[/COLOR]          2.7        60.9
     [COLOR="red"]CHS114.3*3 [/COLOR]     S235JR      [COLOR="red"]8 [/COLOR]       [COLOR="red"]7568 [/COLOR]         2.7        60.9
     CHS114.3*3      S235JR      8        7468          2.7        60.1
     CHS114.3*3      S235JR      8        3537          1.3        28.6

hocam kırmızı ile işaretlediğim bu örnek te bunu iki defa excel tablosuna yazmasına gerek yok hocam; bunu tek bir defa yazması yeterli..
tabloya alındığında :
CHS114.3*3 7568 16
 
Merhaba,

Bugün mesajınızı okuduğum an pilimin bittiği an :)

İstediğiniz yapılabilinir ama kodlar baya karmaşık hale gelebilir.

Bu hali ile excele aldıktan sonra madem 2007 sürüm excel kullanıyorsunuz bunu çok hızlı bir şekilde fazla kayıtları silebilirsiniz.

Veri sekmesinde Yinelenenleri kaldır ile yapabilirsiniz.
 
Sayfaya düşürdükten sonra özetlemek (özet tablo ile) daha uygun olur.
Eki inceleyin. (Kod revize)

Kod:
Sub TXTGetir()
    Range("a2:f65536").ClearContents
    
    Set reg = CreateObject("vbscript.regexp")
    reg.Global = True
    reg.Pattern = "[a-zA-Z0-9\.\*]+(?:\s+)?"
    
    Open ThisWorkbook.Path & "\liste1.txt" For Input As #1
        c = 1
        While Not EOF(1)
            Line Input #1, s
            If Trim(Left(s, 5)) = "" Then
                Set m = reg.Execute(s)
                If m.Count = 6 Then
                    c = c + 1
                    Cells(c, "a") = Trim(m(0))
                    Cells(c, "b") = Trim(m(1))
                    Cells(c, "c") = Trim(m(2))
                    Cells(c, "d") = Trim(m(3))
                    Cells(c, "e") = Val(Trim(m(4)))
                    Cells(c, "f") = Val(Trim(m(5)))
                End If
            End If
        Wend
    Close
End Sub
 

Ekli dosyalar

Sayfaya düşürdükten sonra özetlemek (özet tablo ile) daha uygun olur.
Eki inceleyin. (Kod revize)

Kod:
Sub TXTGetir()
    Range("a2:f65536").ClearContents
    
    Set reg = CreateObject("vbscript.regexp")
    reg.Global = True
    reg.Pattern = "[a-zA-Z0-9\.\*]+(?:\s+)?"
    
    Open ThisWorkbook.Path & "\liste1.txt" For Input As #1
        c = 1
        While Not EOF(1)
            Line Input #1, s
            If Trim(Left(s, 5)) = "" Then
                Set m = reg.Execute(s)
                If m.Count = 6 Then
                    c = c + 1
                    Cells(c, "a") = Trim(m(0))
                    Cells(c, "b") = Trim(m(1))
                    Cells(c, "c") = Trim(m(2))
                    Cells(c, "d") = Trim(m(3))
                    Cells(c, "e") = Val(Trim(m(4)))
                    Cells(c, "f") = Val(Trim(m(5)))
                End If
            End If
        Wend
    Close
End Sub

Merhaba.
hocam bu göndermiş olduğunuz kod son revize edilmiş kodla aynı işi yapıyor.. "Sayfaya düşürdükten sonra özetlemek" bu veriyi aldıktan sonra düzenlemeyi kastediyorsunuz sanırım.. eğer öyle ise; tablo tasarımı açısından bu çok uygun değil.. benim amacım aynı değerleri toplatarak tabloya almak..
teşekkürler..
 
Geri
Üst