• DİKKAT

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

Kapalı dosyadan, dosyayı açmadan veri çekme

Katılım
25 Mart 2017
Mesajlar
177
Excel Vers. ve Dili
2013
merhabalar,

kapalı dosyadan veri, dosyayı açmadan aşağıdaki kodla veri çekiyorum. hedef Dosyanın 1. sayfasından veri çekiyorum. zaman zaman bu 1. sayfanın adı değişmektedir ve kod çalışmamaktadır. aşağıdaki "hedef" sayfası yerine sheets(1) şeklinde değiştirme imkanımız var mıdır?
şimdiden teşekkürler



[FLASH] Dim Baglanti, Rs As Object
With Sheets("Program")
Set Baglanti = CreateObject("ADODB.Connection")
dosya = "D:\Dosya\Kitap.xlsx"
Baglanti.Open "provider=microsoft.ace.oledb.12.0;data source=" & dosya & ";extended properties=""excel 12.0;hdr=no"""
Set Rs = Baglanti.Execute("select f1,f6 from [hedef$] where not isnull(f1)")
.Range("Aa" & 1)(1, 1).CopyFromRecordset Rs
End With
Set Baglanti = Nothing [/FLASH]
 
Aşağıdaki şekilde deneyin.
Kod:
Set Rs = Baglanti.Execute("select f1,f6 from [" & sheets(1).name & "$] where not isnull(f1)")
 
hocam merhaba
değişikliğinizi denedim. yükleme yaptığım sayfanın sheets(1)'ini alıyor.
hedefteki sheets(1)'i almadığı için hata veriyor.
 
Haklısınız, kafam karışmış. ADO ile denedim zannedersem olmuyor....
Başka çare bulamadım. Aşağıdaki gibi deneyin
Kod:
Application.ScreenUpdating = False
    Workbooks.Open Filename:=dosya
   Ad = Sheets(1).Name
    ActiveWindow.Close
    Application.ScreenUpdating = True
Set Rs = Baglanti.Execute("select f1,f6 from [" & Ad & "$] where not isnull(f1)")
 
Son düzenleme:
ADO ile sayfa isimlerine ulaşılabiliyormuş ama dosyaları sekme sırası ile değil sayfa adına göre sıralayarak veriyor.
Kod:
Set oRS = Baglanti.OpenSchema(adSchemaTables)
Do While Not oRS.EOF 
   Msgbox oRS.Fields("table_name").Value
   oRS.MoveNext
Loop
Eğer sekme sırası ile veriler gelseydi ilk sayfanın adını aşağıdaki kodla alınabilirdi.
Kod:
Set oRS = Baglanti.OpenSchema(adSchemaTables)
   ad = oRS.Fields("table_name").Value
 
Son düzenleme:
Çalıştığınız dosyadaki ilk tablo ismini veriyor.
Data source kısmına siz erişmek istediğiniz dosya yolunu ve adını yazınız.:cool:

Düzeltme:Sayfaları indexe göre değilde isme göre sıralıyor.

Kod:
Sub Excel_Tablo_Listele()
Dim Katalog As Object
Dim Tablo As Object
dosya = Application.GetOpenFilename(FileFilter:="Microsoft Excel Workbooks, *.xls; *.xlsx", Title:="Open Workbook")

Set Katalog = CreateObject("ADOX.Catalog")
Set Tablo = CreateObject("ADOX.Table")
Katalog.ActiveConnection = "Provider=Microsoft.ace.OLEDB.12.0;Data Source=" & dosya _
& ";Extended Properties=""Excel 12.0;HDR=Yes"""
MsgBox Katalog.tables(0).Name
Set Katalog = Nothing
Set Tablo = Nothing
End Sub
 
Orion hocam aşağıdaki gibi yaptım maalesef çalışmadı

Sub Excel_Tablo_Listele()
Dim Katalog As Object
Dim Tablo As Object
dosya = Application.GetOpenFilename(FileFilter:="Microsoft Excel Workbooks, *.xls; *.xlsx", Title:="Open Workbook")

Set Katalog = CreateObject("ADOX.Catalog")
Set Tablo = CreateObject("ADOX.Table")
Katalog.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=dosya" & ThisWorkbook.FullName & ";" _
& "Extended Properties=""Excel 8.0;HDR=Yes"""
MsgBox Katalog.tables(1).Name
Set Katalog = Nothing
Set Tablo = Nothing
End Sub
 
Böyle deneyin.:cool:
Kod:
Katalog.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dosya & ";" _
& "Extended Properties=""Excel 8.0;HDR=Yes"""
 
Orion hocam,

sağlayıcı bulunamıyor. düzgün yüklenmemiş olabilir hatası veriyor.
 
Sn. Orion1 dosya yolu soran iletişim kutusu açılıyor. Yine ada göre sıralayıp sayfa ismi veriyor. ilk sekmeye z ile başlayan, son sekmeye a ile başlayan sayfa ismi verip deneyin.
 
Sn. Orion1 dosya yolu soran iletişim kutusu açılıyor. Yine ada göre sıralayıp sayfa ismi veriyor. ilk sekmeye z ile başlayan, son sekmeye a ile başlayan sayfa ismi verip deneyin.

Haklısınız.
İndexe göre değilde isme göre sıralıyor.:cool:
 
Orion hocam,
Kodunuzu denedim. Çalışıyor.
Yardımınız ve desteğiniz için çok teşekkür ederim
 
Orion hocam,
Kodunuzu denedim. Çalışıyor.
Yardımınız ve desteğiniz için çok teşekkür ederim

Kodlar yalnız isim sırasına göre sıralamada ilk küçük harfe göre sıralıyor.Mesala ilk sırada Sayfa2 isimli sayfa olsun.İkinci sırada Sayfa1 isimli sayfa olsun,ilk sıradaki Sayfa2 yi seçeceğine,2nci sıradaki sayfa1 i seçiyor.Bunun için bu kodlar sizi yanıltabilir.:cool:
 
Orion hocam,

Ado ile excele veri yüklediğimde, eğer sütunlar arasındaki veriler eşdeğer değilse o satırı yüklemiyor. Neden bu şekilde yapıyor? Bir nedeni var mıdır
 
Orion hocam,

Ado ile excele veri yüklediğimde, eğer sütunlar arasındaki veriler eşdeğer değilse o satırı yüklemiyor. Neden bu şekilde yapıyor? Bir nedeni var mıdır

Bir örnek verirmisiniz?
 
Geri
Üst