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 & "%'")
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,039
Excel Vers. ve Dili
Office 2013 İngilizce
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 & "%'")
 
Katılım
9 Eylül 2005
Mesajlar
24
Cevap için teşekkürler. Acaba dosya kapalı olduğu için kapalı dosyanın aktif sayfa ismini nasıl alabilirim. sayfa=?
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,039
Excel Vers. ve Dili
Office 2013 İngilizce
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
 
Katılım
20 Şubat 2007
Mesajlar
644
Excel Vers. ve Dili
2007 Excel, Word Tr
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
 
Katılım
9 Eylül 2005
Mesajlar
24
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.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,135
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Kapalı dosyada tek sayfa mı var?
 
Katılım
9 Eylül 2005
Mesajlar
24
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 & "%'")
 
Katılım
9 Eylül 2005
Mesajlar
24
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
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,135
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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.
 
Katılım
9 Eylül 2005
Mesajlar
24
Ben de bu konuyu bilmediğim için formda sorma ihtiyacı duydum. Verdiğiniz bilgiler için teşekkür ederim.
 

yusuf1284

Altın Üye
Katılım
17 Ocak 2015
Mesajlar
224
Excel Vers. ve Dili
Office Pro 2016 TR
Altın Üyelik Bitiş Tarihi
09-02-2028
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
 
Üst