64 bit excel ADO csv dosyasına bağlantı

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,623
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Merhaba,

64 bit office 2013 yüklü sistemde csv dosyalarına hangi bağlantı yolu ile ulaşabilirim. Aşağıdaki yol ile olmadı.Yardımcı olabilir misiniz.


Kod:
    Set con = VBA.CreateObject("Adodb.Connection")
    con.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" & _
    yol & ";Extensions=asc,csv,tab,txt;"
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,623
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Korhan bey merhaba,

Aşağıdaki kod ile dosyadan veri alabiliyorum ama dosyadaki formatta datayı getiremiyorum.
Delimiter kullanmak gerekiyor ama istediğim gibi olmadı.

Kod:
Sub getir()
Cells.Clear
yol = "C:\Users\" & Environ("UserName") & "\Desktop\rapor\"
Set con = VBA.CreateObject("adodb.Connection")

con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
yol & ";extended properties=""text;hdr=no;FMT=Delimited"""

dosya = "deneme.csv"

sorgu = "select * from [" & dosya & "]"

Set rs = con.Execute(sorgu)

Range("a1").CopyFromRecordset rs
End Sub
 

Ekli dosyalar

Son düzenleme:

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,334
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Bağlantıyı dikkatli okuduysanız, küçük bir registry ayarı gerektiğinden bahsetmiş.

.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,334
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Az önce dosyaları incelememiştim. Şimdi baktığımda "deneme.csv" bu metoda uygun görünmüyor. Diğer ikisinden biri "tab" ile ayrılmış. "FMT=TabDelimited" kullanmalısınız. Diğeri ( ; ) ile ayrılmış. Onun için önce registry ayarı ve "FMT=Delimited" kullanmalısınız.

Bu arada amacınız BDP programına dosya hazırlamksa, basit bir kopyala/yapıştır ile yapabilirsiniz.

.
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,623
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Az önce dosyaları incelememiştim. Şimdi baktığımda "deneme.csv" bu metoda uygun görünmüyor. Diğer ikisinden biri "tab" ile ayrılmış. "FMT=TabDelimited" kullanmalısınız. Diğeri ( ; ) ile ayrılmış. Onun için önce registry ayarı ve "FMT=Delimited" kullanmalısınız.

Bu arada amacınız BDP programına dosya hazırlamksa, basit bir kopyala/yapıştır ile yapabilirsiniz.

.
Zeki bey teşekkürler.Bs kısmını örnek olsun diye hazırladım.Asıl işim deneme dosyası ile.Ado ile olmayacaksa,exceldeki veri sekmesi altındaki metin'den al özelliğini kullanacağım.Bütün gün Ado ile uğraştım ama olmadı.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,334
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Hemen pes etmeyin... :) Çalışıyor...
Masaüstünde " schema.ini " dosyası oluşturup içine şunu yapıştırın (ba-bs1.csv için):

Kod:
[ba-bs1.csv]
ColNameHeader=False
Format=Delimited(;)
Sonra aşağıdaki kodu çalıştırın:

Kod:
Sub getir()
Cells.Clear
yol = Environ("Userprofile") & "\Desktop\"
Set con = VBA.CreateObject("adodb.Connection")

con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
yol & ";extended properties=""text;hdr=no;"""

dosya = "ba-bs1.csv"

sorgu = "select * from [" & dosya & "]"

Set rs = con.Execute(sorgu)

Range("a1").CopyFromRecordset rs
End Sub
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,623
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Hemen pes etmeyin... :) Çalışıyor...
Masaüstünde "schema.ini" dosyası oluşturup içine şunu yapıştırın (ba-bs1.csv için):

Kod:
[ba-bs1.csv]
ColNameHeader=False
Format=Delimited(;)
Sonra aşağıdaki kodu çalıştırın:

Kod:
Sub getir()
Cells.Clear
yol = Environ("Userprofile") & "\Desktop\"
Set con = VBA.CreateObject("adodb.Connection")

con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
yol & ";extended properties=""text;hdr=no;"""

dosya = "ba-bs1.csv"

sorgu = "select * from [" & dosya & "]"

Set rs = con.Execute(sorgu)

Range("a1").CopyFromRecordset rs
End Sub
Zeki bey çok teşekkürler. Elinize bilginize sağlık.
 
Üst