• DİKKAT

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

kapalı dosyanın adını sayfa adına bağlamak

Katılım
13 Mayıs 2005
Mesajlar
761
Excel Vers. ve Dili
2010 Türkçe
Kapalı dosya adı ile sayfa adı aynı. "Select * From [exportExcel$A2:P] bu kısımdaki sayfa adını dinamik hale nasıl getirebiliriz.
Kapalı dosyanın adını sayfa adına endekslemek istiyorum.

Kod:
Sub Maas_Bordro_Aktar()

    Application.ScreenUpdating = False
    
    Dim Dosya As Variant, Bağlanti As Object, Kayit_Seti As Object, Zaman As Double
    Dosya = Application.GetOpenFilename(FileFilter:="Excel Dosyaları (*.xls;*.xlsx;*.xlsm;*.csv),*xls;*.xlsm;*.xlsx;*.csv", MultiSelect:=False)

    Range("C2").Select
    ActiveSheet.Unprotect
    
    If Dosya = False Then
    MsgBox "Dosya seçimi yapmadığınız için işlem iptal edildi!", vbCritical
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowSorting:=True, AllowFiltering:=True
    Exit Sub
    End If
    
    Zaman = Timer
    Set Baglanti = CreateObject("Adodb.Connection")
    
    Baglanti.Open "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" & _
    Dosya & ";Extended Properties = ""Excel 12.0 Macro;Hdr=No"""
      
    On Error GoTo hata
    
    Set Kayit_Seti = Baglanti.Execute("Select * From [exportExcel$A2:P] Where F3 Is Not Null")
    Cells(Rows.Count, 3).End(3)(2, 1).CopyFromRecordset Kayit_Seti
    Kayit_Seti.Close
    
    If Baglanti.State <> 0 Then Baglanti.Close
    Set Baglanti = Nothing
    
    Call SonDolu
    Application.Goto Reference:=ActiveCell, Scroll:=True

    MsgBox "Veri aktarımı tamamlanmıştır." & vbCrLf & vbCrLf & _
           "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowSorting:=True, AllowFiltering:=True
    Exit Sub

hata:
    If Baglanti.State <> 0 Then Baglanti.Close
    Set Baglanti = Nothing
    
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowSorting:=True, AllowFiltering:=True
    MsgBox "Hatalı dosya seçtiniz!" & vbCrLf & vbCrLf & "Dosyada 'exportExcel' isimli sayfa bulunamadı!", vbCritical
End Sub
 
Sonuçta yazılan sorgu, bir metin ifadesi olduğu için birleştirme operatörü ile sayfa adını başka bir yerden alabilirsiniz. Örneğin;

Kod:
"Select * From [" & sayfaadı & "$A2:P] Where F3 Is Not Null"
 
Son düzenleme:
Hocam seçilen dosyanın adını okuyacak yöntemi bilmiyorum. Dosya seçildiğinde dosya adını okutabilirsem birleştirme operayörü ile bağlayabilirim sanırım. Sistemin oluşturduğu dosya ile sayfa aynı ve her rapor oluşturmada sürekli bu ad artarak devam ediyor.
 
Belki daha iyi bir çözüm bulunabilir ancak aşağıdaki gibi işinizi çözecektir.

Kod:
Dosya = Application.GetOpenFilename(FileFilter:="Excel Dosyaları (*.xls;*.xlsx;*.xlsm;*.csv),*xls;*.xlsm;*.xlsx;*.csv", MultiSelect:=False)

dosyaadi=Split(Split(Dosya, "\")(UBound(Split(Dosya, "\"))), ".")(0)

"Select * From [" & dosyaadi & "$A2:P] Where F3 Is Not Null"
 
Son düzenleme:
Böylede olabilir...

C++:
Sayfa = CreateObject("Scripting.FileSystemObject").GetBaseName(Dosya)
Set Kayit_Seti = Baglanti.Execute("Select * From [" & Sayfa & "$A2:P] Where F3 Is Not Null")
 
Korhan hocam Levent hocam teşekkür ederim. Dün akşam verdiğiniz kodlar çalışıyordu. Sağolsun programcı dosya ad oluşturma düzenini değiştirmiş dosya adında sayfa adında olmayan .xxx diye değişken eklemiş şimdi çalışmıyor.

örnek dosya adı : exportExcel - 2022-04-21T101015.975
örnek sayfa adı : exportExcel - 2022-04-21T101015

Nokta dahil ".975" 4 karakter sayfa adında hiç oluşmuyor. Teşekkür ederim sizede zahmet verdim.

Levent hocamın örneği üzerinden gitmeye çalışacağım o benim kapasiteme daha yakın :)
 
C#:
    Dosya = Application.GetOpenFilename(FileFilter:="Excel Dosyaları (*.xls;*.xlsx;*.xlsm;*.csv),*xls;*.xlsm;*.xlsx;*.csv", MultiSelect:=False)
    
    sayfaAdi = Split(Dir(Dosya), ".")(0)
    
    MsgBox sayfaAdi

.
 
Teşekkür ederim hocam çözmüştüm sizin örneği deneyeceğim
 
Geri
Üst