01/10/2011, 12:32
WiniFred
Selamlar,
VBA kodu ile bir txt dosyasından bir tabloya veri almak ve bir bir tablodaki veriyi txt dosyası olarak kaydetmem gerekiyor.
Forum baktığım örneklerde access'in otomatik işlevlerinden yararlanılmış. Ama benim bunu vb ile yapmam gerekiyor. Daha önce Excel'de bununla ilgili kodlar hazırlamıştım ama bunlar Access'te (2007) çalışmadı maalesef.
Txt dosyasından veri alırken dosyanın yerini kullanıcı seçmeli, txt dosyasına kaydederken de dosyanın kaydedileceği kullanıcı seçmeli.
Sonra satırları elde edebilsem yeter. Bunları mid ile ayırır, INSERT sorgusuyla kaydedebilirim ben (diğer kısımlar exceldeki gibi çalışırsa tabi).
Excel'de hazırladığım txt'den okuma kodunun, dosya açma ve satır okuma kısmı şöyle:
tabii ki bu kodun gerisi de var. ama ben bu kadarını Access'te nasıl yapabileceğimi öğrensem gerisini getirebileceğimi düşünüyorum. Ayrıca bu kodun bir kısmını Excel'in makro kaydetme işleviyle elde etmiştim.
Yine Excel'de hazırlamış olduğum txt'ye aktarma kodunun kaydetme penceresi açma kısmı şöyle:
vb kodunun bu dosyaya kayıt aktaran kısmı da şöyle:
Saygılarımla...
VBA kodu ile bir txt dosyasından bir tabloya veri almak ve bir bir tablodaki veriyi txt dosyası olarak kaydetmem gerekiyor.
Forum baktığım örneklerde access'in otomatik işlevlerinden yararlanılmış. Ama benim bunu vb ile yapmam gerekiyor. Daha önce Excel'de bununla ilgili kodlar hazırlamıştım ama bunlar Access'te (2007) çalışmadı maalesef.
Txt dosyasından veri alırken dosyanın yerini kullanıcı seçmeli, txt dosyasına kaydederken de dosyanın kaydedileceği kullanıcı seçmeli.
Sonra satırları elde edebilsem yeter. Bunları mid ile ayırır, INSERT sorgusuyla kaydedebilirim ben (diğer kısımlar exceldeki gibi çalışırsa tabi).
Excel'de hazırladığım txt'den okuma kodunun, dosya açma ve satır okuma kısmı şöyle:
Sub txt_donustur()
Dim f_sistem As New FileSystemObject
Dim dosya As TextStream
Dim satir As String, i As Integer
Dim bir As String, iki As String, uc As String, dort As String
On Error GoTo hata
Set dosya = f_sistem.OpenTextFile(Application.GetOpenFilename, ForReading)
i = 1
Do While True
If dosya.AtEndOfStream = True Then Exit Do
satir = dosya.ReadLine
Cells(i, 1).Value = satir
i = i + 1
Loop
tabii ki bu kodun gerisi de var. ama ben bu kadarını Access'te nasıl yapabileceğimi öğrensem gerisini getirebileceğimi düşünüyorum. Ayrıca bu kodun bir kısmını Excel'in makro kaydetme işleviyle elde etmiştim.
Yine Excel'de hazırlamış olduğum txt'ye aktarma kodunun kaydetme penceresi açma kısmı şöyle:
isim = Application.GetSaveAsFilename("", "Metin Dosyası,*.txt", i, "Kaydet")
If isim = False Then Exit Sub
vb kodunun bu dosyaya kayıt aktaran kısmı da şöyle:
'********İLK SATIR OLUŞTURULUYOR*************************
Open isim For Output As #1
Print #1, "XX" & sube_kodu & "00" & firma_kodu & UserForm1.combo_mue.Value
Close #1
'*********************************
'********KAYITLAR GİRİLİYOR*******************************
Open isim For Append As #1
Do Until ActiveCell = Cells(65536, 1).End(xlUp).Offset(1, 0)
hesapno = ActiveCell.Offset(0, 3).Value
kisiadi = ActiveCell.Offset(0, 1).Value & " " & ActiveCell.Offset(0, 2).Value
tutar = ActiveCell.Offset(0, 4).Value
If Len(kisiadi) > 25 Then
kisiadi = Mid(kisiadi, 1, 25)
End If
bosluk = Space(25 - Len(kisiadi))
sifir1 = String(13 - Len(Format(tutar, "###.00")), "0")
If ActiveCell.Offset(0, 5) = "HATALI BANKA" Or ActiveCell.Offset(0, 5).Value = "ÖDENEK HATALI" Then GoTo devam
Print #1, kisiadi & bosluk & hesapno & sifir1 & Format(tutar, "###.00") & sube_kodu & sifir & ActiveCell.Value & aydonustur(ay) & Space(7 - Len(aydonustur(ay))) & yil & " " & aciklama
kisi = kisi + 1
toplam_tutar = toplam_tutar + tutar
devam:
ActiveCell.Offset(1, 0).Select
Loop
Close #1
'***********************************************************
Saygılarımla...