• DİKKAT

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

Ado ile sayfa seçimine göre veri alma

Katılım
9 Eylül 2005
Mesajlar
24
Merhaba, bir konuda desteğinize ihtiyacım var. Aşağıdaki kod ile Sheet1 den verileri çekiyorum. Fakat veri alacağım sayfalar değiştiğinde o sayfadan veriyi alamıyorum.
Aşağıdaki kodu nasıl düzenlemem gerekiyor acaba. Ben verilerimi sayfa adına göre değil dosyanın aktif sayfasından almak istiyorum. [ActiveSheet$B2:E65000] gibi.

Set My_Recordset = My_Connection.Execute("Select * From [Sheet1$B2:E65000] Where F2 Like '%" & Search_Data & "%'")
 
Merhaba, bir konuda desteğinize ihtiyacım var. Aşağıdaki kod ile Sheet1 den verileri çekiyorum. Fakat veri alacağım sayfalar değiştiğinde o sayfadan veriyi alamıyorum.
Aşağıdaki kodu nasıl düzenlemem gerekiyor acaba. Ben verilerimi sayfa adına göre değil dosyanın aktif sayfasından almak istiyorum. [ActiveSheet$B2:E65000] gibi.

Set My_Recordset = My_Connection.Execute("Select * From [Sheet1$B2:E65000] Where F2 Like '%" & Search_Data & "%'")

sayfa adını dinamik hale getirmelisiniz

Kod:
dim sayfa as string

sayfa="Sheet1"
Set My_Recordset = My_Connection.Execute("Select * From [" & sayfa & "$B2:E65000] Where F2 Like '%" & Search_Data & "%'")
 
Cevap için teşekkürler. Acaba dosya kapalı olduğu için kapalı dosyanın aktif sayfa ismini nasıl alabilirim. sayfa=?
 
Cevap için teşekkürler. Acaba dosya kapalı olduğu için kapalı dosyanın aktif sayfa ismini nasıl alabilirim. sayfa=?
kapalı dosyada aktif sayfa isimnin alınabileceğiniz zannetmiyorum ama; kapalı dosyadaki tüm sayfa isimlerini alabilirsiniz
 
Cevap için teşekkürler. Acaba dosya kapalı olduğu için kapalı dosyanın aktif sayfa ismini nasıl alabilirim. sayfa=?
"Kapalı dosyada aktif sayfa" derken sanırım ilk sayfasını demek istiyor.
Birinci sayfa : Sheets(1)
İkinci sayfa : Sheets(2) gibi
 
Aslında kapalı dosyada aktif sayfa Sheets(1) , Sheets(2) , Sheets(3) olabilir. Dosyayı açtığımızda karşımıza çıkacak sayfa. Fakat sizin dediğiniz gibi de düzenleyebilirim. Yani Birinci sayfa Sheets(1) olabilir.
 
Merhaba,

Kapalı dosyada tek sayfa mı var?
 
Merhaba, form üzerinden veri çekmek istediğim dosyaları seçiyorum. Dosyalarda 2 sayfa olabiliyor.. Fakat benim veri çekmek istediğim dosyalardaki sayfa isimleri farklı olabiliyor. Aşağıdaki kod sabit isim üzerinden çağırıyor. Kapalı dosyanın açılacak sayfasından veri alabilmek mümkün müdür?
Set My_Recordset = My_Connection.Execute("Select * From [Sheet1$B2:E65000] Where F2 Like '%" & Search_Data & "%'")
 
Ayrıca, en son aşağıdaki kodlarla ilk sayfayı alabiliyorum. Bu kodlarla veri alacağım dosyalardaki sayfaları hep 1.sırada tutarak, sayfa isimlerini alıp bu yöntem ile çözüme ulaştım.
Sub depo_ilksayfa()
Dim daoDBEngine As Object, DB As Object, MySheet As String
Set daoDBEngine = CreateObject("DAO.DBEngine.120")
Set DB = daoDBEngine.OpenDatabase(ListBox1.Tag, False, False, "Excel 8.0; HDR=Yes; IMEX=1;")
MySheet = VBA.Replace(DB.TableDefs(0).Name, "'", "")
MySheet = Application.Substitute(MySheet, "'", "")
depoilksayfa = Left(MySheet, InStr(1, MySheet, "$", 1) - 1)
End Sub
 
Catalog ifadesi ile ADO kullanılarak kapalı dosyanın tablolarına erişebilirsiniz. Fakat hangi sayfanın aktif olduğunu tespit edemiyoruz diye biliyorum.

Kapalı dosyayı açmak sorun değilse bu işlem kolaylıkla yapılabilir. Dosya (gizli) açılır ve aktif sayfanın ismi değişkene atanır sonrasında dosya tekrar kapatılır. (Gizli ) kısmından emin değilim denemeden yazdığım için parantez içinde belirttim.

Sizin bulduğunuz yöntemde ise kapalı dosyayı açarak veri alınacak sayfayı ilk sıraya alıyorsunuz. Sonuç itibariyle kapalı dosyaya müdahale ediyorsunuz. Müdahale edilecekse sayfa adını değiştiripte yine sonuç alabilirsiniz.
 
Ben de bu konuyu bilmediğim için formda sorma ihtiyacı duydum. Verdiğiniz bilgiler için teşekkür ederim.
 
Sayfa adını şu şekilde alıp devam edebilirsiniz


Kod:
Sub Test()
    Dim sayfa As String
    sayfa = SayfaAdiAl()
    MsgBox "Sayfa adı: " & sayfa
   
    Set My_Recordset = My_Connection.Execute("Select * From [" & sayfa & "$B2:E65000] Where F2 Like '%" & Search_Data & "%'")

End Sub

Function SayfaAdiAl() As String
    Dim wb As Workbook
    Dim sayfaAdi As String
    Dim dosyaYolu As String
    
    dosyaYolu = ThisWorkbook.Path & "\xx.xlsx"

    Application.ScreenUpdating = False
    Set wb = Workbooks.Open(dosyaYolu, ReadOnly:=True, IgnoreReadOnlyRecommended:=True)

    sayfaAdi = wb.Sheets(1).Name

    wb.Close SaveChanges:=False
    
    Application.ScreenUpdating = True

    SayfaAdiAl = sayfaAdi
End Function
 
Geri
Üst