excel'den txt dosyasına aktarım

Katılım
7 Ocak 2005
Mesajlar
236
Excel Vers. ve Dili
Office Excel 2003 Tr/İng.
Altın Üyelik Bitiş Tarihi
03.01.2019
Arkadaşlar merhaba.sorunumu access de de denedim ama başarılı olamadım.kod yazmada da yeni olduğum için başaramadım..Fikirlenizi esirgemesseniz sevinirim.
YApmak istediğim, excel dosyasındaki sütunlara ayrılmış veriyi txt dosyasına aktarmak istiyorum.aslına bu zor bişey değil ancak excel dosyasındaki verilerin uzunlukları değişebilmekte ve ben txt dosyasına hep aynı uzunluklar sabit olacak şekilde oluşsun istiyorum.yani örneğin adı 32 karakter uzunluğunda olsun ve txt dosyasına o kadar yer ayırsın. ekteki iki örnektede göreceksiniz ki bunlarda txt olanının üst kısmında herbir sütun için ayrılacak uzunluk sayıyla belirtirlmiştir.

Konu hakkında yardımlarınızı ya da fikirlerinizi bildirirseniz çok sevinirim.
En içten Sevgilerimle.
 
Katılım
3 Nisan 2007
Mesajlar
65
Excel Vers. ve Dili
Office 2003 Tr ve 2007 Tr
dosya/farklı kaydet (File/saveas ) den dosya türünü metin(sekmeyle ayrılmış).txt seçersen olur.
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba


Aşağıdaki eklentiyi deneyiniz.

Txt dosyasının fontunu Courier New olarak seçiniz.
C diskinizde text7.txt dosyasına bilgilerinizi kaydeder.
 
Katılım
7 Ocak 2005
Mesajlar
236
Excel Vers. ve Dili
Office Excel 2003 Tr/İng.
Altın Üyelik Bitiş Tarihi
03.01.2019
Dim i
Dim rng As range
Dim veri1 As String * 32
Dim veri2 As String * 32
Dim veri3 As String * 24
Dim veri4 As String * 9
Dim veri5 As String * 40
Dim veri6 As String * 12
Dim veri7 As String * 122
Dim veri8 As String * 14
Dim veri9 As String * 11
Dim veri10 As String * 32
Dim veri11 As String * 32

Open "C:\aktar.txt" For Output As #1

For Each rng In range("a:a")

veri1 = rng
veri2 = rng.Offset(0, 2)
veri3 = rng.Offset(3, 3)

Print #1, veri1, veri2, veri3

Next rng
Close #1

Üstad çok teşekkür ederim.harika bir çalışma olmuş.
ben de yukarıdaki gibi bir kod bloğunu uygulamak istedim ancak offset metodunu veri11'e kadar uygulamayadım.for-next kurmak istemiştim bu konuda bir fikir alabilir miyim sizden acaba?
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

ikili döngü kurabiliriz fakat siz alan boylarını kendinize göre ayarlamak istediğinizden dolayı kuramıyoruz.

aşağıdaki kodlar metin sütunlarını tab tuşuyla ayırır.sizn istediğiniz gibi değil fakat deneyin.

Kod:
Sub Kaydet1()
fname = "c:\text8.txt"
colm = Cells(1, 256).End(xlToLeft).Column
Open fname For Output As #1
For sat = 2 To [a65536].End(3).Row
  If Cells(sat, 1) <> "" Then
    veri = ""
    For SUT = 1 To colm
        veri = veri & Cells(sat, SUT) & vbTab
    Next SUT
    Print #1, veri
  End If
Next sat
Close #1
End Sub
 
Katılım
7 Ocak 2005
Mesajlar
236
Excel Vers. ve Dili
Office Excel 2003 Tr/İng.
Altın Üyelik Bitiş Tarihi
03.01.2019
&#220;stad t&#351;k ederim.bu bi&#231;imiyle de oluyor ancak txt dosyas&#305;nda veriler kar&#305;&#351;&#305;k oluyor ve veri uzunluklar&#305; belirli oldu&#287;u i&#231;in verimli olmuyor ancak ilk verdi&#287;iniz kod asl&#305;nda
tam olarak i&#351;imi g&#246;rd&#252; de ben ikili d&#246;ng&#252;y&#252; kurarsam kodu nas&#305;l k&#305;salt&#305;r&#305;m diye d&#252;&#351;&#252;n&#252;yordum...
&#304;lginize &#231;ok &#231;ok te&#351;ekk&#252;r ediyorum.yard&#305;m&#305;n&#305;z olmasa daha &#231;ok u&#287;ra&#351;acakt&#305;m sayenizde sorunu &#231;&#246;zd&#252;m.
En i&#231;ten sevgi ve sayg&#305;lar&#305;mla.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,646
Excel Vers. ve Dili
Pro Plus 2021
Say&#305;n amelie, a&#351;a&#287;&#305;daki kodlar&#305; bir mod&#252;l&#252;n i&#231;ine kopyalay&#305;n, ayr&#305;ca linki inceleyin.


Kod:
Sub Kaydet1()
baslik = Array("Ad&#305;", "Soyad&#305;", "TC Kimlik No", "Cinsiyet", "Do&#287;um Yeri", "Do&#287;um Tarihi", "Adres", "Adres &#304;l", "Telefon", "Baba Ad&#305;", "Anne Ad&#305;")
uz = Array(32, 32, 24, 9, 40, 12, 122, 14, 11, 32, 32)
fname = "c:\text8.txt"


Open fname For Output As #1
For sut = 1 To 11
    veri = veri & esitle(baslik(sut - 1), uz(sut - 1))
Next sut
Print #1, veri

For sat = 2 To [a65536].End(3).Row
    
    If Cells(sat, 1) <> "" Then
        veri = ""
        For sut = 1 To 11
            veri = veri & esitle(Cells(sat, sut), uz(sut - 1))
        Next sut
        Print #1, veri
    End If
Next sat
Close #1
End Sub
Function esitle(giris, uz)
    If uz > Len(giris) Then
        esitle = giris & String(uz - Len(giris), " ")
        Else
        esitle = Mid(giris, 1, uz)
    End If
End Function
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

Sayın Veysel bey gönderdiğiniz kodlar ve atladığım konuya göstermiş olduğunuz duyarlılıktan dolayı ayrı ayrı teşekkür ederim.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,646
Excel Vers. ve Dili
Pro Plus 2021
Merhaba

Sayın Veysel bey gönderdiğiniz kodlar ve atladığım konuya göstermiş olduğunuz duyarlılıktan dolayı ayrı ayrı teşekkür ederim.
Zafer Bey, dosyalardaki gerçek veriler konusu beni gerçekten çok rahatsız ediyor. Çünkü bulunduğunuz konumdan dolayı size emanet edilmiş kişilerin özel bilgilerini internette yayınlıyorsunuz. Günümüzde akla hayale gelmedik sahtekarlık yöntemlerinin olduğu düşünüldüğünde olabilecekleri hiç düşünemiyorum. Saygılar....
 
Katılım
7 Ocak 2005
Mesajlar
236
Excel Vers. ve Dili
Office Excel 2003 Tr/İng.
Altın Üyelik Bitiş Tarihi
03.01.2019
Sn veyselemre yanıt.

Zafer Bey, dosyalardaki gerçek veriler konusu beni gerçekten çok rahatsız ediyor. Çünkü bulunduğunuz konumdan dolayı size emanet edilmiş kişilerin özel bilgilerini internette yayınlıyorsunuz. Günümüzde akla hayale gelmedik sahtekarlık yöntemlerinin olduğu düşünüldüğünde olabilecekleri hiç düşünemiyorum. Saygılar....
Sayın veyselemre, öncelikle mesajınıza geç cevap verdiğim için özür dilerim.
1- cevabınız için tşk ederim.mevcut soruna harika bir çözüm oldu çünkü farketmiştim ki txt dosyasındaki uzunluklar nedense olması gerekenden farklı oluyordu.
2-gerçek bilgiler konusundaki duyarlılığınız ve uyarınız için teşekkür ediyorum.
Bu konuda aslında fazlasıyla özenli olmaya çalışırken sanırım çözüm araşındaki aşırı yoğunlaşmamdan dolayı bu konuda biraz da arkadaş kurbanı olduğumu belirtmek istiyorum çünkü dosyanın bana gelişininde bahsedilen konuda uyarmış olmama rağmen yine de kendimce teyidler yapmam ve daha özenli olmam gerektiğini kabul ediyorum.
Kıssadan hisse bu konudaki uyarıcı tavrınızı ve duyarlı yaklaşımınızı takdir ediyor
özür diliyorum.
En içten sevgi ve saygılarımı sunar, bu konuda daha özenli olacağımı bildiririm.
 
Üst