Çözüldü sayfa adı bulma

Katılım
13 Temmuz 2016
Mesajlar
613
Excel Vers. ve Dili
Excel 2010 & 2016 Türkçe
Altın Üyelik Bitiş Tarihi
06-03-2020
Merhaba
Aşağıdaki Kod ile kapalı dosyadan veri alıyorum ancak her zaman sayfa isimleri aynı değil bunun için hata alıyorum. Bağlantı Kurduğu her excelde sadece tek sayfa var. Olmasını istediğim ya her bağlantı kurduğu excelin sayfa ismini alması yada her bağlantı kurduğu excelin birinci sayfasındaki veriyi alması. Şuanda aktif kullandığım sayfa ismi hesaphareketleri$A6:F
Teşekkürler

Kod:
Set cn = CreateObject("adodb.connection")
Set Rs = CreateObject("adodb.recordset")
cnstr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ExcelDosyaYolu & ExcelDosyaAdi & ";Extended Properties=""Excel 12.0 Macro;HDR=NO"""
cn.Open (cnstr)

    S1 = "[Excel 12.0 Macro;HDR=NO;Database=" & ExcelDosyaYolu & ExcelDosyaAdi & "].[hesaphareketleri$A6:F]"
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,371
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
Forumda Catalog sözcüğünü aratırmısınız.
 
Katılım
13 Temmuz 2016
Mesajlar
613
Excel Vers. ve Dili
Excel 2010 & 2016 Türkçe
Altın Üyelik Bitiş Tarihi
06-03-2020
İlginiz için teşekkürler.
Söylediğiniz gibi Catalog konusunu forum da arattırdım ancak fazla bilgim olmadığı için yapamıyorum. Burada ki konuyu buldum.
Kodumda kırmızı kısım [" & Sheets(1).Name & "$] olarak değiştirdim ancak aktif makro Aktif çalışan sayfanın adını algıladı Veri içeren Sayfayı algılamadı.

S1 = "[Excel 12.0 Macro;HDR=NO;Database=" & ExcelDosyaYolu & ExcelDosyaAdi & "].[ hesaphareketleri $A6:F]"




Kod:
Alt DosyaOku()
  FSO'yu = CreateObject("Scripting.FileSystemObject") olarak ayarlar
  Office.FileDialog Olarak fd'yi Dim
  fd = Application.FileDialog(msoFileDialogFilePicker) olarak ayarlar
    fd sonucu
        .AllowMultiSelect = Yanlış
        .Filtreler.Temizle
        .Title = "Bir Excel Dosyası Seçin"
        .Filtreler.Add "Excel Belgeleri", "*.xls;*.xlsx;*.xlsm", 1
        .Göster = Doğru ise
            ExcelDosyaAdi = Dizin(.SelectedItems(1))
            ExcelDosyaYolu = .InitialFileName
        Başka
            Abonelikten Çık
        Eğer Sonlandırıyorsanız
    ile bitmek
Set cn = CreateObject("adodb.connection")
Set Rs = CreateObject("adodb.recordset")
cnstr = "Sağlayıcı=Microsoft.ACE.OLEDB.12.0;Veri Kaynağı=" & ExcelDosyaYolu & ExcelDosyaAdi & ";Extended Properties=""Excel 12.0 Macro;HDR=NO"""
cn.aç (cnstr)
    S1 = "[Excel 12.0 Macro;HDR=NO;Database=" & ExcelDosyaYolu & ExcelDosyaAdi & "].[hesaphareketleri$A6:F ]"
    Sorgu = "" & S1 & " F1,F2,F3,F4'ü seçin, burada F3 boş değil ve F3 'T%' gibi değil ve F3 'Tutar' gibi değil"
Set Rs = cn.Execute(Sorgu)
oturdu = 1
Aralık("A:B") = ""

Rs.EOF Değilse veya Rs.BOF Değilse O Zaman
Rs.MoveFirst
Rs.EOF Değilken Yapın
Format(Rs(3), "#,##0.00") < 0 ise O zaman
Başka
Aralık("A" & sat) = Sağ(Rs(1), 10)
Aralık("B" & sat) = Biçim(Rs(3), "#,##0,00")


oturdu = oturdu + 1
Eğer Sonlandırıyorsanız
₺TaşıSonraki
döngü
Eğer Sonlandırıyorsanız

cn.Kapat

Aboneliği Sonlandır
[/KOD]
[/QUOTE]
 
Son düzenleme:

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
İlginiz için teşekkürler.
Söylediğiniz gibi uluslararası ama bu konuşmayı fazla bilgim olamayacağı için veremem. Burada ki konuyu buldum.
Kodumda kırmızı kısım [" & Sheets(1).Name & "$] olarak sevgilim ancak aktif makro çalısan yüzünün adını algıladı Veri içeren Sayfayı algılamadı.

......
....

Valla 5 defa okudum ama, önceki mesajların neresinde uluslararası bir konu geçmiş, kim kimin sevgilisi hiçbirşey anlamadım....

Tek anladığım, eğer kapalı dosyanın ilk sayfasının adını bulmak istiyorsanız aşağıdaki kodu deneyebilirsiniz....

C#:
Sub Test()
    Dim daoDBEngine As Object, DB As Object, myFile As String, i As Byte
    
    Set daoDBEngine = CreateObject("DAO.DBEngine.120")
    
    myFile = "C:\TestFolder\Test.xlsm"
    
    Set DB = daoDBEngine.OpenDatabase(myFile, False, False, "Excel 8.0; HDR=Yes; IMEX=1;")
    
        MySheet = VBA.Replace(DB.TableDefs(0).Name, "'", "")
        MySheet = Application.Substitute(MySheet, "'", "")
        MsgBox MySheet
End Sub

.
 
Katılım
13 Temmuz 2016
Mesajlar
613
Excel Vers. ve Dili
Excel 2010 & 2016 Türkçe
Altın Üyelik Bitiş Tarihi
06-03-2020
Valla 5 defa okudum ama, önceki mesajların neresinde uluslararası bir konu geçmiş, kim kimin sevgilisi hiçbirşey anlamadım....

Tek anladığım, eğer kapalı dosyanın ilk sayfasının adını bulmak istiyorsanız aşağıdaki kodu deneyebilirsiniz....

C#:
Sub Test()
    Dim daoDBEngine As Object, DB As Object, myFile As String, i As Byte
  
    Set daoDBEngine = CreateObject("DAO.DBEngine.120")
  
    myFile = "C:\TestFolder\Test.xlsm"
  
    Set DB = daoDBEngine.OpenDatabase(myFile, False, False, "Excel 8.0; HDR=Yes; IMEX=1;")
  
        MySheet = VBA.Replace(DB.TableDefs(0).Name, "'", "")
        MySheet = Application.Substitute(MySheet, "'", "")
        MsgBox MySheet
End Sub

.
:) Haklısınız haluk bey. Telefon ile yazdığımdan klavye otomatik değiştirmiş bende aceleden kontrol edemedim. Yazdıklarımı ben bile anlamadım. :)

Yazığınız kodlar ile kapalı dosyanın Sayfa ismini alıyorum. Ancak MySheet değişkenini içeren sayfa ismini benim kodlara uyarladığım da hata alıyorum.

Teşekkürler.

S1 = "[Excel 12.0 Macro;HDR=NO;Database=" & ExcelDosyaYolu & ExcelDosyaAdi & "].[hesaphareketleri$A6:F ]"

S1 = "[Excel 12.0 Macro;HDR=NO;Database=" & ExcelDosyaYolu & ExcelDosyaAdi & "].[MySheet$A6:F ]"
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,272
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Birleştirme operatörlerini kullanarak sayfa adını ilgili bölüme yazmalısınız..
 
Katılım
13 Temmuz 2016
Mesajlar
613
Excel Vers. ve Dili
Excel 2010 & 2016 Türkçe
Altın Üyelik Bitiş Tarihi
06-03-2020
Birleştirme operatörlerini kullanarak sayfa adını ilgili bölüme yazmalısınız..
Aşagıdaki gibi birleştirdim anacak hata verdi. Birleştirme operatörlerini tam olarak nasıl yapamadım.
S1 = "[Excel 12.0 Macro;HDR=NO;Database=" & ExcelDosyaYolu & ExcelDosyaAdi & "].[MySheet & "$A6:F "]"
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
C#:
Sub Test2()
    Dim daoDBEngine As Object, DB As Object, RS As Object, myFile As String
    
    Set daoDBEngine = CreateObject("DAO.DBEngine.120")
    
    myFile = "C:\TestFolder\Test.xlsm"
    
    Set DB = daoDBEngine.OpenDatabase(myFile, False, False, "Excel 8.0; HDR=Yes; IMEX=1;")
    
    MySheet = VBA.Replace(DB.TableDefs(0).Name, "'", "")
    MySheet = Application.Substitute(MySheet, "'", "")
    
    Set RS = DB.OpenRecordset("Select [Kod], [Adet] From [" & MySheet & "]")

    Range("A2").CopyFromRecordset RS
End Sub
.
 
Katılım
13 Temmuz 2016
Mesajlar
613
Excel Vers. ve Dili
Excel 2010 & 2016 Türkçe
Altın Üyelik Bitiş Tarihi
06-03-2020
Yardımcı olan tüm arkadaşlara teşekkürler
 
Üst