Bu yazımızda bir kaynak tarafından üretilen verimizin excel dosyasına makro ile Text Dosyası Okuma aktarmayı göreceğiz. Bazı durumlarda direk verilerinizi excel dosyanızada yazabilirsiniz ama bazı durumlarda daha hızlı ve basit yöntemleri tercih ettiğinizde “bunları nasıl excele aktarağım” diye canınız sıkılmasın yazılımda her şey mümkün 🙂
Dosyayı excel’e aktarma konusunda excelin için hazır araçlar olsa da biz şimdi kendi ürettiğimiz bir formattaki veriyi istediğimiz şekilde işleyip excel’e yazdırmayı göreceğiz.
İlk olarak “raw data” dediğimiz verimizi üretelim. Ben tamamen atmasyon olarak bir formatta verimi oluşturdum.
Aşağıdaki örnekte veri bloğumu * ile başlatıp her paket arasına ; koydum ve her satır arasına da yine * koydum. Tamamen atmasyon değerler yazdım. Bunu bir .txt dosyası oluşturup iine kaydedin. İsmi hiç önemli değil. Önemli olan algoritmadır arkadaşlar.
*1;MARKA1;MODEL1;ISIM1;A1;B1;*2;MARKA2;MODEL2;ISIM2;A2;B2;*3;MARKA3;MODEL3;ISIM3;A3;B3;*4;MARKA4;MODEL4;ISIM4;A4;B4;*
İkinci olarak Excel dosyamıza bir buton ekleyelim. Daha önceki yazılarımızda bahsetmiştik. Developer sekmesinden design mode a geçip butonumuzu ekliyoruz. Sonra oluşturduğumuz .txt dosyasının adresini butonun yanındaki bir ücreye tam olarak yazın.
Buradaki amacımız butona bastığımızda F2 hücresinde yazan adresteki dosyanın içine girip verimizi işleyerek ilgili kısımları ilgili hücreye sırayla yazma işlemini kod yazarak yapmak. Şekil olsun diye de 3. satıra sutun başlıklarını yine atmasyon olarak yazdım.
Şimdi butonumuza çift tıklayarak Excel VBA da butonun kod sayfasına girin. Eğer butona basılıyormuş gibi oluyorsa design mode da değilsinizdir. Design mode a geçin.
Sonra aşağıdaki kodu aynen yapıştırın.
Dim satir As Integer
Dim sutun As Integer
Dim bilgi As String
Private Sub CommandButton1_Click()
satir = 3 ' baslangic satiri
sutun = 0 ' baslangic sutunu
bilgi = ""
Open Cells(2, 6) For Input As #1 ' dosyayi aç (adresin bulundugu hucre)
Do Until EOF(1)
Input #1, rawData ' tüm satirlari oku
For i = 0 To Len(rawData) ' karakter uzunluðunu bul
If Mid(rawData, i + 1, 1) = "*" Then ' tek tek karakterleri oku
satir = satir + 1 ' * karakteri geldiginde alt satira ve satir basina geç
sutun = 0
bilgi = ""
Else
If Mid(rawData, i + 1, 1) = ";" Then ' ; karakteri geldiginde bir sonraki hücreye geç
sutun = sutun + 1
Cells(satir, sutun) = bilgi ' birlestirilen paketi hücreye yapistir
bilgi = ""
Else
bilgi = bilgi & Mid(rawData, i + 1, 1) ' paketi birlestir
End If
End If
Next i
Loop
Close ' acilan dosyayi kapat
End SubButona basılınca gördüğünüz gibi saniyeler içerisinde verimiz istediğimiz şekilde sayfamıza geldi. Daha sonra bu verimizi istediğimiz gibi pivot table ile anlamlandırabiliriz.


1 yorum
ömer · 28 Ağustos 2019 12:13 tarihinde
hata veriyo 26.satır