txt dosyasına ve txt dosyasından aktarım (vba ile)
Tarih
01/10/2011 12:32
Konu Sahibi
WiniFred
Yorumlar
8
Okunma
5057
Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 5
  • 4
  • 3
  • 2
  • 1

Derecelendirme: 0/5 - 0 oy



WiniFred
Aktif Üye
Kullanici Avatari
Aktif Üye
121
25/09/2011
11
Zonguldak
-
28/11/2016,21:49
Çözüldü 
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:

Visual Basic Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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:

Visual Basic Code
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:

Visual Basic Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
'********İ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


Kur@l
AccessTR.Net
Kullanici Avatari
Uzman
2.029
05/11/2008
KONYA
Ofis 2010
15/11/2016,02:32
Çözüldü 
Sayın WiniFred;
Metin dosyasına transfer için ekteki çalışmam sizin için idealdir. Metin dosyasından Accesse aktarma konusunda Access yeterince mahir bir programdır. İnceleyin sonucu ile ilgili dönüş yapınız.
TXT Yapmak  
Cevapla


WiniFred
Aktif Üye
Kullanici Avatari
Aktif Üye
121
25/09/2011
11
Zonguldak
-
28/11/2016,21:49
Çözüldü 
Sayın Kur@l;
cevabınız için çok teşekkür ederim. Çalışmanız da harika, yapmak istediğim şeylerin tamamına yakını mevcut ve kesinlikle yararlanacağım.

Yalnızca dosyanın yerini ve dosyayı kullanıcının bir "aç" ve "kaydet" penceresinden seçebilmesini istiyorum. Bence bu başkalarının kullanacağı bir uygulama için son derece önemli, olması gereken bir özellik.

Metin dosyasından Access'e aktarma konusunu Access'te tam olarak incelemedim ama tahminimce, aynen yukarıdaki örneğimdeki gibi alınacak satırlarla ilgili bir takım işlemler yaptıktan sonra tabloya aktarmam gerekeceği için bana pek yardımcı olamayacak gibi geliyor.

Bu iki transfer meselesi excel'de bu kadar kolay iken (ki excel'de de metin dosyasını excel'e aktarma konusunda çok güzel bir sihirbaz var, ama işimi görmüyor, çünkü o uygulamayı da başkaları kullanıyor ve 1-2 tıklamayla halledilebilecek bir hale getirmiştim olayı) access'te neden bu kadar sıkıntılı olmuş, microsoft bunu yaparken aklında ne varmış anlamadım gitti.

Keşke excel'le aynı kodlar ile yapılabilseydi (sadece hücreler yerine recordset kullansaydık), çok iyi olurdu.
Cevapla


Kur@l
AccessTR.Net
Kullanici Avatari
Uzman
2.029
05/11/2008
KONYA
Ofis 2010
15/11/2016,02:32
Çözüldü 
Sizin için bir örnek hazırlıyorum bakalım neye benzeyecek 1-2 saat sürer... Eğer bu süre zarfında buralarda olursanız memnun olurum.
Cevapla


WiniFred
Aktif Üye
Kullanici Avatari
Aktif Üye
121
25/09/2011
11
Zonguldak
-
28/11/2016,21:49
Çözüldü 
Uğraşa uğraşa istediğim şeyi nasıl yapacağımı buldum. Dosya Aç ve Kaydet pencerelerini nasıl açtıracağımı ve dosya yolunu nasıl seçtirebileceğimi buldum. Sanırım gerisini de sizin yukarıda vermiş olduğunuz çalışmanız yardımıyla çözebilirim. umarım bu mesajımı görürsünüz de daha fazla uğraşmazsınız.

İlginize, emeğinize sağlık Sayın Kur@l, çok teşekkür ederim.

Visual Basic Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub btnGozat_Click()

On Error GoTo hata

With Application.FileDialog(msoFileDialogOpen)
 .AllowMultiSelect = False
 .Filters.Add "Metin Dosyası", "*.txt", 1
' .InitialFileName = "*.txt"
 .Show
 
 txtDosyaYolu = .SelectedItems.Item(1)
 
End With
 
Exit Sub

hata:
 If Err.Number = 5 Then
 Exit Sub
 Else
 MsgBox "HATA OLUŞTU!-" & Err.Number & "-" & Err.Description, vbCritical
 End If

End Sub


Visual Basic Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Private Sub btnKaydet_Click()

Dim dosya As String

On Error GoTo hata

With Application.FileDialog(msoFileDialogSaveAs)
 .AllowMultiSelect = False
 .Title = "Kaydet"
' .InitialFileName = "Yardımlaşma" & ".txt"
 .Show
 
 dosya = .SelectedItems.Item(1) & ".txt"
 
End With

MsgBox dosya

Exit Sub

hata:
 If Err.Number = 5 Then
 Exit Sub
 Else
 MsgBox "HATA OLUŞTU!-" & Err.Number & "-" & Err.Description, vbCritical
 End If

End Sub

Cevapla


Kur@l
AccessTR.Net
Kullanici Avatari
Uzman
2.029
05/11/2008
KONYA
Ofis 2010
15/11/2016,02:32
Çözüldü 
Mesajınızı Gördüm. Geri dönüş yaptığınız için teşekkürler. Bittiğinde çalışmanızda paylaşırsanız sevinirim.
Kolay Gelsin.
Cevapla







Konuyu Okuyanlar: 1 Ziyaretçi


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Tarih Son Yorum
Çözüldü iki veritabanı arası aktarım esnasında virgüllü değer hatası mehmetb84 7 517 03/03/2016, 16:03 mehmetb84
Çözüldü iki veritabanı arasında verileri dönüştürerek aktarım mehmetb84 15 656 17/02/2016, 19:14 mehmetb84
Çözüldü accesten outlooka veri aktarım access acemisi 5 501 25/12/2015, 00:43 ozanakkaya
Çözüldü rapor yerine word dosyasına gönderme ibrahimeryigit41 2 534 18/12/2015, 19:42 ozanakkaya
Çözüldü Ağ Üzerindeki Bilgisayardaki Access Dosyasına Insert, Update, Delete moskovic 8 983 20/10/2015, 22:12 moskovic


Türkçe Çeviri: MCTR, Forum Yazılımı: MyBB, © 2002-2016 MyBB Group.
DMCA.com Protection Status
© Desing by XSTYLED| Develops by ozanakkaya