Ado İle Farklı Sütunlara Veri Çekme

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Kolay gelsin.
Aşağıdaki kod ile Ado ile kapalı dosyadan verileri getiriyorum. Yalnız veriler yan yana sütunlarda geliyor.Range("a5").CopyFromRecordset rs kısmını nasıl değiştirmem gerekli ki verinin f1 kısmını a5 den itibaren, f2 kısmını (2. sutundakileri) c5 den itibaren şeklinde benim istediğim sütunlara getireyim. Range("a5").CopyFromRecordset rs(0) şeklinde yaptım olmadı.

Kod:
Private Sub CommandButton11_Click()
Range("A5:I65000").ClearContents

    Set Con = CreateObject("Adodb.Connection"):  Set rs = CreateObject("Adodb.RecordSet")
        Con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
        ThisWorkbook.Path & "\kapalı.xlsx" & ";extended properties=""excel 12.0;hdr=no;imex=1"""
        
        sorgu = "Select f1,f3,f4,f6,f8,f12 from [FaturaListesi$]" ' where f3 = '" & Range("N2").Value & "'"
        rs.Open sorgu, Con, 1, 1
        
        Range("a5").CopyFromRecordset rs

         rs.Close: Con.Close
         Set Con = Nothing: Set rs = Nothing: sorgu = Empty
         
    
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
Atlamak istediğiniz sütun kadar '' (iki tane tek tırnak) ekleyin.
 
Son düzenleme:

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,359
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Araya boş alanlar eklerseniz olur.

Select f1,'', '', f3,f4,f6,f8,f12 gibi

ama arada kalan sütunlarda veri varsa o sıkıntı yaratır.

Geç kalmışım :)
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
İlginiz için çok teşekkürler.
 

vardar07

Destek Ekibi
Destek Ekibi
Katılım
19 Mart 2008
Mesajlar
2,154
Excel Vers. ve Dili
Office 2007 Enterprise
Türkçe
1 tane userform üstüne 1 adet listbox bir adet buton ile veri başlıklarını seçerek alabilirsiniz.
Kod:
Private con As Object
Sub baglan()
Set con = CreateObject("adodb.connection")
yol = ThisWorkbook.Path
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & yol & "\Veritabani.mdb;User Id=admin;Password=;"
End Sub

Private Sub CommandButton1_Click()
Sheets("Sayfa2").Range("A1:F" & Rows.Count).ClearContents
Call baglan
sorgu = "select "
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
sorgu = sorgu & "[" & ListBox1.List(i, 0) & "],"
End If
Next i

sorgu = Mid(sorgu, 1, Len(sorgu) - 1)
sorgu = sorgu & " from Tablo1"
Set rs = CreateObject("adodb.recordset")
rs.Open sorgu, con, 1, 1
If rs.RecordCount > 0 Then
For i = 0 To rs.Fields.Count - 1
Cells(1, i + 1).Value = rs.Fields(i).Name
Next i
Range("a2").CopyFromRecordset rs
End If
End Sub

Private Sub UserForm_Initialize()
ListBox1.ListStyle = fmListStyleOption
Call baglan
Set rs = CreateObject("adodb.recordset")
rs.Open "select * from Tablo1", con, 1, 1
For i = 0 To rs.Fields.Count - 1
ListBox1.AddItem rs.Fields(i).Name
Next i
End Sub
 

leonadies

Excel Derya Deniz Bizde Kulaç Atmaya Çalışıyoruz:)
Altın Üye
Katılım
12 Şubat 2015
Mesajlar
515
Excel Vers. ve Dili
Office 2016 TR 64 Bit Windows
Altın Üyelik Bitiş Tarihi
01-02-2027
Private Sub CommandButton11_Click()
Range("A5:I65000").ClearContents

Set Con = CreateObject("Adodb.Connection"): Set rs = CreateObject("Adodb.RecordSet")
Con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.Path & "\kapalı.xlsx" & ";extended properties=""excel 12.0;hdr=no;imex=1"""

sorgu = "Select f1,f3,f4,f6,f8,f12 from [FaturaListesi$]" ' where f3 = '" & Range("N2").Value & "'"
rs.Open sorgu, Con, 1, 1

Range("a5").CopyFromRecordset rs

rs.Close: Con.Close
Set Con = Nothing: Set rs = Nothing: sorgu = Empty
Merhaba bu kodda sorgu diye tanımladığımız kısmı revize edip kullanmaya çalışıyorum. Ancak kapalı excelim düzenli olarak webden inen bir dosya olduğu için Kapalı excelde sorgu diye ad tanımlaması yapamıyorum. Nasıl çözebiliriz revize etmek istesek?
 
Üst