• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Ado İle Farklı Sütunlara Veri Çekme

  • Konbuyu başlatan Konbuyu başlatan askm
  • Başlangıç tarihi Başlangıç tarihi

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,746
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
 
Atlamak istediğiniz sütun kadar '' (iki tane tek tırnak) ekleyin.
 
Son düzenleme:
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 :)
 
İlginiz için çok teşekkürler.
 
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
 
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?
 
Geri
Üst