Skip to main content

AccessTr.neT


txt dosyasına ve txt dosyasından aktarım (vba ile)

txt dosyasına ve txt dosyasından aktarım (vba ile)

Çözüldü #1
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:

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...
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da

Bu Konudaki Yorumlar
txt dosyasına ve txt dosyasından aktarım (vba ile) - Yazar: WiniFred - 01/10/2011, 12:32
Task