Farklı xls dosyalarını tek bir shette alt alta birleştirme

Katılım
26 Haziran 2010
Mesajlar
6
Excel Vers. ve Dili
MS Excel 365 - İngilizce
Bütün dosyalarınızda aktarılacak sayfa adı Sheet3'mü?

Birde aktarımın nasıl olmasını istiyorsunuz?

Aktarmak istediğiniz dosyaları seçmek ister misiniz? Yoksa sabit yol tanımlayıp bu yoldaki dosyalar mı işleme alınsın?

Verilerin hepsi bir dosyada bir sayfada alt alta mı aktarılsın?
Hayırlı Sabahlar Hocam,

1-Bütün hepsinde sheet3 isimli klasörü aktarmak istiyorum.

2-Excel dosyalarını seçmeyeceğim, gönderdiğim örnek klasör gibi klasörleri seçip içindeki aktarmamız yeterli.

3- Evet hocam, hepsini bir sayfada alt alta aktarmak istiyorum. Eğer mümkünse de "E" kolonuna göre sıralanması sağlayabilir misiniz?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,456
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
#61 nolu mesjımda paylaştığım dosyayı denediniz mi?
 
Katılım
26 Haziran 2010
Mesajlar
6
Excel Vers. ve Dili
MS Excel 365 - İngilizce
Hocam Günaydın

Öncelikle geçmiş bayramınızı kutlarım.

#61 nolu mesajı indiremedim. Çünkü ücretli üyelik istiyor onuda yapmak istediğim zaman işlemi tamamlayamıyorum. wetransfer link süresinin de dolması nedeniyle indiremedim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,456
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Teşekkürler.. Bilmukabele..

#61 nolu mesajımda ki harici linki güncelledim. Tekrar deneyebilirsiniz.
 
Katılım
26 Haziran 2010
Mesajlar
6
Excel Vers. ve Dili
MS Excel 365 - İngilizce
çok çok çok teşekkür ederim
ellerinize emeğinize sağlık Hocam
 

mtncbk

Altın Üye
Katılım
26 Nisan 2008
Mesajlar
9
Excel Vers. ve Dili
Office 2007
Altın Üyelik Bitiş Tarihi
14-11-2025
Hocam merhabalar. 5 numaralı mesajdaki kodları kullanıyorum. Dosyalarım çok fazla olduğundan mıdır nedir bilemiyorum ama birleştirmede 34516. satırdan sonraya ne yaptımsa ekleme yapmıyor. Sadece oraya kadar yapıyor. Nerede hata yapıyorum acaba? Teşekkürler.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,456
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Tanımlama bölümünde "Integer" olan değişkenleri "Long" olarak tanımlayıp deneyiniz.
 

mtncbk

Altın Üye
Katılım
26 Nisan 2008
Mesajlar
9
Excel Vers. ve Dili
Office 2007
Altın Üyelik Bitiş Tarihi
14-11-2025
Tanımlama bölümünde "Integer" olan değişkenleri "Long" olarak tanımlayıp deneyiniz.
Hocam hemen deneyeceğim. Dosyalarım çok. satır yeterli olmadığında taşımayı Sayfa2 ye yapması için ne yapabilirim kodlara. Tşkler.
 

Hattushil

Altın Üye
Katılım
20 Şubat 2011
Mesajlar
98
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
23-03-2028
Merhaba,

Aşağıdaki kodu boş bir excel kitabına uygulayın.

Kodu çalıştırdığınızda seçtiğiniz klasör altında yeni bir excel sayfası oluşturulur ve içine klasör altındaki dosyaların ilk sayfalarındaki veriler alt alta aktarılır.

Yeni excel dosyası "Dosya_gg_aa_yyyy_ss_dd_nn" ismi ile kayıt edilir. Kırmızı bölüm günün tarihi ve saatidir.

Kod:
Option Explicit

Sub DOSYALARDAN_VERİ_AL()
    Dim K1 As Workbook, K2 As Workbook
    Dim K3 As Workbook, S1 As Worksheet
    Dim X As Integer, Satır As Integer, Son_Satır As Long
    Dim Klasör As Object, Kaynak_Klasör As String, Dosya As String
 
    Set Klasör = CreateObject("Shell.Application").BrowseForFolder(0, "Kaynak dosyaları içeren klasörü seçiniz...", 50, &H0)
 
    If Klasör = "Masaüstü" Or Klasör = "Desktop" Then
        Kaynak_Klasör = Environ("UserProfile") & "\Desktop\"
    ElseIf Not Klasör Is Nothing Then
        Kaynak_Klasör = Klasör.Items.Item.Path
    Else
        MsgBox "İşleme devam edebilmek için klasör seçimi yapmalısınız!" & Chr(10) & _
        "İşleminiz iptal edilmiştir.", vbCritical
        Exit Sub
    End If
 
    On Error Resume Next
 
    Set K1 = ThisWorkbook
    Set K2 = Workbooks.Add(1)
    Dosya = Dir(Kaynak_Klasör & "\*.xls")
    Satır = 2
 
    Application.ScreenUpdating = False
 
    Do
        If Dosya <> "" And Dosya <> K1.Name And InStr(1, Dosya, "Dosya") = 0 Then
            DoEvents
            Application.DisplayAlerts = False
            Set K3 = Workbooks.Open(Kaynak_Klasör & "\" & Dosya, False, False)
            Application.DisplayAlerts = True
            Set S1 = K3.Sheets(1)
         
            Son_Satır = S1.Cells(Rows.Count, 1).End(3).Row
            S1.Range("A2:AA" & Son_Satır).Copy _
            K2.Sheets("Sayfa1").Range("A" & Satır)
            Satır = K2.Sheets("Sayfa1").Cells(Rows.Count, 1).End(3).Row + 2
         
            K3.Close True
            Dosya = Dir
        Else
            Dosya = Dir
        End If
    Loop While Dosya <> ""
 
    K2.Sheets("Sayfa1").Cells.EntireColumn.AutoFit
    K2.SaveAs (Kaynak_Klasör & "\Dosya_" & Format(Now, "dd_mm_yyyy_hh_mm_ss"))
    K2.Close True
 
    Set K1 = Nothing
    Set K2 = Nothing
    Set K3 = Nothing
 
    Application.ScreenUpdating = True

    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
Merhaba Korhan Ayhan bey,
Yapmış olduğunuz makroda sadece ilk sheet'i alıyor.
Klasör içeriğimdeki excel dosyaları birden fazla sheet içeriyor. sadece ikinci sheet'i alması için makroyu nasıl düzenlemeliyim?

bir de makroyu çalıştırdığımda klasör içeriğindeki excel dosyalarının da kayıt tarih ve saatlerini değiştiriyor, kayıt zamanlarını değiştirmesini nasıl önleyebilirim?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,456
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Burada ki sayısal değer dosyanın içinde ki sayfa sırasını ifade eder.

Set S1 = K3.Sheets(1)


Siz ikinci sırada ki sayfa için 2 olarak düzenlemelisiniz.
 

Hattushil

Altın Üye
Katılım
20 Şubat 2011
Mesajlar
98
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
23-03-2028
yalnız şöyle bir sorunum var,
makroyu çalıştırdığımda bu şekilde bir uyarı mesajı alıyorum ve TÜMÜNE EVET diyerek geçiyorum ama her excel dosyasında soruyor.
bunu nasıl düzeltebilirim?

https://resmim.net/i/KLmpn

Option Explicit

Sub DOSYALARDAN_VERİ_AL()
Dim K1 As Workbook, K2 As Workbook
Dim K3 As Workbook, S1 As Worksheet
Dim X As Integer, Satır As Integer, Son_Satır As Long
Dim Klasör As Object, Kaynak_Klasör As String, Dosya As String

Set Klasör = CreateObject("Shell.Application").BrowseForFolder(0, "Kaynak dosyaları içeren klasörü seçiniz...", 50, &H0)

If Klasör = "Masaüstü" Or Klasör = "Desktop" Then
Kaynak_Klasör = Environ("UserProfile") & "\Desktop\"
ElseIf Not Klasör Is Nothing Then
Kaynak_Klasör = Klasör.Items.Item.Path
Else
MsgBox "İşleme devam edebilmek için klasör seçimi yapmalısınız!" & Chr(10) & _
"İşleminiz iptal edilmiştir.", vbCritical
Exit Sub
End If

On Error Resume Next

Set K1 = ThisWorkbook
Set K2 = Workbooks.Add(1)
Dosya = Dir(Kaynak_Klasör & "\*.xls")
Satır = 2

Application.ScreenUpdating = False

Do
If Dosya <> "" And Dosya <> K1.Name And InStr(1, Dosya, "Dosya") = 0 Then
DoEvents
Application.DisplayAlerts = False
Set K3 = Workbooks.Open(Kaynak_Klasör & "\" & Dosya, False, False)
Application.DisplayAlerts = True
Set S1 = K3.Sheets(2)

Son_Satır = S1.Cells(Rows.Count, 1).End(3).Row
S1.Range("A2:AA" & Son_Satır).Copy _
K2.Sheets("Sayfa1").Range("A" & Satır)
Satır = K2.Sheets("Sayfa1").Cells(Rows.Count, 1).End(3).Row + 2

K3.Close True
Dosya = Dir
Else
Dosya = Dir
End If
Loop While Dosya <> ""

K2.Sheets("Sayfa1").Cells.EntireColumn.AutoFit
K2.SaveAs (Kaynak_Klasör & "\Dosya_" & Format(Now, "dd_mm_yyyy_hh_mm_ss"))
K2.Close True

Set K1 = Nothing
Set K2 = Nothing
Set K3 = Nothing

Application.ScreenUpdating = True

MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,456
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kaynak dosyalarınızda ad-tanımlama olabilir. Veriler kopyala-yapıştır yöntemi ile taşındığı için çakışma oluyordur. Bunları kontrol etmelisiniz.
 

yusuf1284

Altın Üye
Katılım
17 Ocak 2015
Mesajlar
226
Excel Vers. ve Dili
Office Pro 2016 TR
Altın Üyelik Bitiş Tarihi
09-02-2028
Ekteki dosyayı bir deneyiniz.

Harici Link (Silinebilir) ; https://we.tl/t-sBmYnHio7e
Kayit_Seti.Open Sorgu, Baglanti, 1, 1

veri almak istediğim dosyanın ilk sayfasının başlıkları

ADRES BİLGİLERİ TOPLU SORGULAMA SONUCU

               

S.No

T.C. Kimlik No

Adres No

Ülke

İl

İlçe

Bucak

Köy

Mahalle

Cadde/Sokak

Dış Kapı No

İç Kapı No

Köy Kayıt No

Taşınma Tarihi

Beyan Tarihi

Varsa Diğer Adresleri



bu şekilde ondan mı hata alıyorum
 
Katılım
2 Temmuz 2021
Mesajlar
1
Excel Vers. ve Dili
excel
Hocam merhabalar peki dosyalarin icinde birden fazla sheet varsa bu durumda nasil donguye aliriz ?
 
Katılım
16 Ocak 2015
Mesajlar
28
Excel Vers. ve Dili
excel2016 türkçe
iyi günler arkadaşlar.
korhan hocanın yazmış olduğu kod klasörün içerisinde yeni excel doyası oluşturuyor ama içi boş oluyor. benim excel sayfalarının ''sayfa 1'' değilde SBF_STK_FRMRHS_ENSONSTK_DRM_GTP şeklinde isimlendirilmiş. sayfa 1 yazan kısımları bununla değiştirdim. sonuç yine aynı oldu. yardımcı olacak arkadaşlara şimdiden teşekkür ederim.



Kod:
Option Explicit

Sub DOSYALARDAN_VERİ_AL()
    Dim K1 As Workbook, K2 As Workbook
    Dim K3 As Workbook, S1 As Worksheet
    Dim X As Integer, Satır As Integer, Son_Satır As Long
    Dim Klasör As Object, Kaynak_Klasör As String, Dosya As String
  
    Set Klasör = CreateObject("Shell.Application").BrowseForFolder(0, "Kaynak dosyaları içeren klasörü seçiniz...", 50, &H0)
  
    If Klasör = "Masaüstü" Or Klasör = "Desktop" Then
        Kaynak_Klasör = Environ("UserProfile") & "\Desktop\"
    ElseIf Not Klasör Is Nothing Then
        Kaynak_Klasör = Klasör.Items.Item.Path
    Else
        MsgBox "İşleme devam edebilmek için klasör seçimi yapmalısınız!" & Chr(10) & _
        "İşleminiz iptal edilmiştir.", vbCritical
        Exit Sub
    End If
  
    On Error Resume Next
  
    Set K1 = ThisWorkbook
    Set K2 = Workbooks.Add(1)
    Dosya = Dir(Kaynak_Klasör & "\*.xls")
    Satır = 2
  
    Application.ScreenUpdating = False
  
    Do
        If Dosya <> "" And Dosya <> K1.Name And InStr(1, Dosya, "Dosya") = 0 Then
            DoEvents
            Application.DisplayAlerts = False
            Set K3 = Workbooks.Open(Kaynak_Klasör & "\" & Dosya, False, False)
            Application.DisplayAlerts = True
            Set S1 = K3.Sheets(1)
          
            Son_Satır = S1.Cells(Rows.Count, 1).End(3).Row
            S1.Range("A2:AA" & Son_Satır).Copy _
            K2.Sheets("SBF_STK_FRMRHS_ENSONSTK_DRM_GTP").Range("A" & Satır)
            Satır = K2.Sheets("SBF_STK_FRMRHS_ENSONSTK_DRM_GTP").Cells(Rows.Count, 1).End(3).Row + 2
          
            K3.Close True
            Dosya = Dir
        Else
            Dosya = Dir
        End If
    Loop While Dosya <> ""
  
    K2.Sheets("SBF_STK_FRMRHS_ENSONSTK_DRM_GTP").Cells.EntireColumn.AutoFit
    K2.SaveAs (Kaynak_Klasör & "\Dosya_" & Format(Now, "dd_mm_yyyy_hh_mm_ss"))
    K2.Close True
  
    Set K1 = Nothing
    Set K2 = Nothing
    Set K3 = Nothing
  
    Application.ScreenUpdating = True
 
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,456
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Yardım alabilmeniz için örnek dosyalarınızı paylaşmanız gerekir.
 
Katılım
16 Ocak 2015
Mesajlar
28
Excel Vers. ve Dili
excel2016 türkçe
https://files.fm/u/9ggpzvftc
linki paylaştım hocam. bir klasör içerisinde bu şekilde s(1) den 850 ye kadar excel dosyası var.
sayfa isimleri hepsinde aynı. içerisindeki tablolar genişlik ve başlıklar aynı kimisi daha çok satır içerebiliyor.
ben bunların hepsini tek bir excel sayfasında alt alta almak istiyorum.
 
Üst