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

burhancavus61

Altın Üye
Katılım
13 Mayıs 2005
Mesajlar
761
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
03.11.2024
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
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
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:

burhancavus61

Altın Üye
Katılım
13 Mayıs 2005
Mesajlar
761
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
03.11.2024
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.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
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:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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")
 

burhancavus61

Altın Üye
Katılım
13 Mayıs 2005
Mesajlar
761
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
03.11.2024
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 :)
 

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#:
    Dosya = Application.GetOpenFilename(FileFilter:="Excel Dosyaları (*.xls;*.xlsx;*.xlsm;*.csv),*xls;*.xlsm;*.xlsx;*.csv", MultiSelect:=False)
    
    sayfaAdi = Split(Dir(Dosya), ".")(0)
    
    MsgBox sayfaAdi
.
 

burhancavus61

Altın Üye
Katılım
13 Mayıs 2005
Mesajlar
761
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
03.11.2024
Teşekkür ederim hocam çözmüştüm sizin örneği deneyeceğim
 
Üst