Çalışma kitaplarındaki sayfaları tek bir kitapta toplamak

megadeth61

Altın Üye
Katılım
26 Nisan 2007
Mesajlar
120
Excel Vers. ve Dili
Office 365, TR
Altın Üyelik Bitiş Tarihi
30-11-2028
Merhabalar,

Yaklaşık 200 tane farklı çalışma kitabındaki sayfaları tek bir çalışma kitabına toplamanın kolay bir yolu var mı acaba. Taşı kopyala seçeneğiyle saatlerce uğraşmadan önce sizlere danışmak istedim.

Saygılarımla,
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,307
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Elbette var. Konuyla ilgili veri alınacak dosyalardan örnek eklerseniz yardımcı olabiliriz.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Kodu bir modülün içine ekleyiniz.


Kod:
Dim Kaynak As String
Dim Sayfa_Adı As String
Dim dosya_adı As String
Sub Start()
Sayfa_Adı = ActiveSheet.Name
dosya_adı = ActiveWorkbook.Name
Set Klasor = CreateObject("shell.application").BrowseForFolder(0, "Lütfen bir klasör seçiniz", 50, &H0)
If Not Klasor Is Nothing Then
Kaynak = Klasor.SELF.Path
If InStr(1, Kaynak, "{") > 0 Then GoTo Atla
Call AltListe(Kaynak, "")
Sheets(Sayfa_Adı).Select
MsgBox "işlem tamam"
Else
Atla:
MsgBox "Lütfen Kaynak Klasör Seçimini Yapınız !", vbInformation, "DİKKAT"
End If
Set Klasor = Nothing
End Sub
Private Sub AltListe(Klasor As String, uzanti As String)
Dim Hedef As Object, Kaynak As Object, Dosya As String
Set Hedef = CreateObject("Scripting.FileSystemObject").GetFolder(Klasor).SubFolders
Dim wb As Workbook
Dosya = Dir(Klasor & "\*.**") ' & Uzanti)
Application.ScreenUpdating = False
While Dosya <> ""
DoEvents
If ThisWorkbook.Name <> Dosya Then
On Error Resume Next
sat = ThisWorkbook.Sheets.Count
Application.DisplayAlerts = False
Set wb = Workbooks.Open(Klasor & "\" & Dosya)
ActiveWorkbook.Worksheets.Select
Sheets(1).Activate
ActiveWorkbook.Worksheets.Copy Before:=Workbooks(dosya_adı).Sheets(sat)
End If
Dosya = Dir
wb.Close False
Wend
On Error GoTo sonraki
For Each Kaynak In Hedef
Call AltListe(Kaynak.Path, "")
sonraki:
Next
Set Hedef = Nothing
End Sub
 

megadeth61

Altın Üye
Katılım
26 Nisan 2007
Mesajlar
120
Excel Vers. ve Dili
Office 365, TR
Altın Üyelik Bitiş Tarihi
30-11-2028
Merhabalar,

Korhan Bey,

Örnek dosyalar ektedir. Bu dosyalar içerisindeki sayfaları yeni bir çalışma kitabının altında toplamak istiyorum.

Halit Bey,

Modül oluşturdum ve kodu ekledim ama hiçbir şey olmadı. Sanırım beceremedim.


Bu iş kod kullanmadan yapabilme imkanımız varsa çok iyi olur. Şayet yok ise izlenecek adımları açık bir şekilde yazabilirseniz çok memnun olurum.


İlginiz çin şimdiden teşekkür ederim

Saygılarımla,
 

Ekli dosyalar

megadeth61

Altın Üye
Katılım
26 Nisan 2007
Mesajlar
120
Excel Vers. ve Dili
Office 365, TR
Altın Üyelik Bitiş Tarihi
30-11-2028
Yardımcı olabilir misiniz ?
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
örnek dosyanızı çalıştırmak için makro güvenlik düzeyi orta veya düşük olmalı yani makrolar etkin olmalı
 

Ekli dosyalar

numan şamil

Destek Ekibi
Destek Ekibi
Katılım
27 Ocak 2011
Mesajlar
1,231
Excel Vers. ve Dili
Ofis 2013 Türkçe
Halit hocam merhaba
müsade varsa tam burda bir şey sormak istiyorum mesaj 6 örnek dosyanızda sayfalardaki tüm verileri değilde her sayfanın örn:A3-C8-H4- D6 hücre değerlerini alamak istersek kodları nasıl revize etmemiz gerekiyor?
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Halit hocam merhaba
müsade varsa tam burda bir şey sormak istiyorum mesaj 6 örnek dosyanızda sayfalardaki tüm verileri değilde her sayfanın örn:A3-C8-H4- D6 hücre değerlerini alamak istersek kodları nasıl revize etmemiz gerekiyor?
Bu kod o işi yapmaz bu sadece sayfaları birleştiriyor

aradığınız şeyi sizede daha önceden yaptığımı hatırlıyorum.
 

numan şamil

Destek Ekibi
Destek Ekibi
Katılım
27 Ocak 2011
Mesajlar
1,231
Excel Vers. ve Dili
Ofis 2013 Türkçe
Halit hocam sizden çok yardım aldım hakkını helal et daha önce dosyaların ilk sayfalarından veri almak hususunda yardımcı oldunuz şimdi 3 adet dosyam var bu dosyalarda yaklaşık sürekli artan 70 ' e yakın sayfa var bu sayfalardaki belirli hücrelerdeki verileri tek kitapta ayrı ayrı sayfalarda toplamak istiyorum ( başka klosörde bulunan dosyaların sayfalarından veri almak başlığı altında buna benzer yeni konu açmıştım henüz daha bir cevap alamadım)
 
Son düzenleme:

kemal turan

Altın Üye
Katılım
10 Haziran 2011
Mesajlar
1,669
Excel Vers. ve Dili
Excel 2010 32 bit
Altın Üyelik Bitiş Tarihi
06-10-2032
Halit hocam
Ellerinize sağlık bir hayal kodu yazmışsınız.
Selametle..
 
Katılım
16 Ocak 2011
Mesajlar
3
Excel Vers. ve Dili
2007 TR
Bu kod o işi yapmaz bu sadece sayfaları birleştiriyor

aradığınız şeyi sizede daha önceden yaptığımı hatırlıyorum.
hocam size bir soru sormak istiyorum ama umarım cevaplarsınız

excelde hangi personelimin hangi projeye kaç saat çalıştığını ayrıca gün içerisindeki mola saatlerini düşerek ve mesai saatinden sonraki saatleri de mesai saati olarak hesaplayacak ayrıca , cuma günleri farklı mesai uygulamasını da dikkate alarak hesaplatmak istiyorum bu konu ile ilgili yardımcı olabilirseniz sevinirim
 

Ekli dosyalar

Katılım
22 Kasım 2011
Mesajlar
4
Excel Vers. ve Dili
2007 Türkçe
selam hocam aynı şey benimde aklıma geldi.tek bir excell sayfasında iç içe kitaplar oluşturamazmıyız ?böyle birşey olsa gereksiz dosya çöplüğünden kurtulmuş olurduk.hani yeni bir çalışma kitabı açınca altında sayfa1,sayfa2 diye devam ediyor ya,o sayfalarında hemen altında kitaplar için ayrı bir yer olsa onlar da kitap1 kitap 2 diye devam etse ve bunların hepsini içine alsa süper olurdu.umarım derdimi anlatabilmişimdir.şimdiden teşekkürler.
 
Katılım
30 Kasım 2011
Mesajlar
221
Excel Vers. ve Dili
2003 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25/07/2018
selam hocam aynı şey benimde aklıma geldi.tek bir excell sayfasında iç içe kitaplar oluşturamazmıyız ?böyle birşey olsa gereksiz dosya çöplüğünden kurtulmuş olurduk.hani yeni bir çalışma kitabı açınca altında sayfa1,sayfa2 diye devam ediyor ya,o sayfalarında hemen altında kitaplar için ayrı bir yer olsa onlar da kitap1 kitap 2 diye devam etse ve bunların hepsini içine alsa süper olurdu.umarım derdimi anlatabilmişimdir.şimdiden teşekkürler.
bence bir sayfayı çalışma kitaplar olarak kullansan kitaba bağlantı atsan daha mantıklı. ve ctrl+f komutu ile istedğin kitabı kolayca bulabilirsin bunu dene bence
 
Katılım
29 Ocak 2012
Mesajlar
4
Excel Vers. ve Dili
Office 2010tr
Allah Razı olsun ya saatlerce yapacağım işi anında çözdü..sonsuz teşekkürler..
 
Katılım
14 Ocak 2008
Mesajlar
176
Excel Vers. ve Dili
2010 türkçe
kodu kullandım çok güzel olmuş, ancak bir ilave özellik soracaktım.
birleştirilen excel dosyasının içerisindeki sayfaların adını kaynak dosyaların ismini ni de ilaveten yazdırabilirmiyiz. örneğin DR2-MR0030(sayfa1), DR2-MR0031(sayfa1), DR2-MR0032(sayfa1), gibi.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
kodu kullandım çok güzel olmuş, ancak bir ilave özellik soracaktım.
birleştirilen excel dosyasının içerisindeki sayfaların adını kaynak dosyaların ismini ni de ilaveten yazdırabilirmiyiz. örneğin DR2-MR0030(sayfa1), DR2-MR0031(sayfa1), DR2-MR0032(sayfa1), gibi.
Konu baya eskimiş ne yaptığımızıda unutuyoruz bu aralar aşağıdaki kodu bir deneyin sonucundan bilgi verin.

Kod:

Kod:
Dim Kaynak As String
Dim Sayfa_Adı As String
Dim dosya_adı As String
Sub Start()
Sayfa_Adı = ActiveSheet.Name
dosya_adı = ActiveWorkbook.Name
Set Klasor = CreateObject("shell.application").BrowseForFolder(0, "Lütfen bir klasör seçiniz", 50, &H0)
If Not Klasor Is Nothing Then
Kaynak = Klasor.SELF.Path
If InStr(1, Kaynak, "{") > 0 Then GoTo Atla
Call AltListe(Kaynak, "")
Sheets(Sayfa_Adı).Select
MsgBox "işlem tamam"
Else
Atla:
MsgBox "Lütfen Kaynak Klasör Seçimini Yapınız !", vbInformation, "DİKKAT"
End If
Set Klasor = Nothing
End Sub
Private Sub AltListe(Klasor As String, uzanti As String)
Dim Hedef As Object, Kaynak As Object, Dosya As String
Set Hedef = CreateObject("Scripting.FileSystemObject").GetFolder(Klasor).SubFolders
Dim wb As Workbook
Dosya = Dir(Klasor & "\*.**") ' & Uzanti)
Application.ScreenUpdating = False
While Dosya <> ""
DoEvents
If ThisWorkbook.Name <> Dosya Then
On Error Resume Next
sat = ThisWorkbook.Sheets.Count
Application.DisplayAlerts = False
Set wb = Workbooks.Open(Klasor & "\" & Dosya)
[COLOR=red]dosyaadi = CreateObject("Scripting.FileSystemObject").GetBaseName(Dosya)[/COLOR]
[COLOR=red]For i = 1 To ActiveWorkbook.Sheets.Count[/COLOR]
[COLOR=red]Sheets(i).Name = dosyaadi & "(" & Sheets(i).Name & ")"[/COLOR]
[COLOR=red]Next[/COLOR]
ActiveWorkbook.Worksheets.Select
Sheets(1).Activate
ActiveWorkbook.Worksheets.Copy Before:=Workbooks(dosya_adı).Sheets(sat)
End If
Dosya = Dir
wb.Close False
Wend
On Error GoTo sonraki
For Each Kaynak In Hedef
Call AltListe(Kaynak.Path, "")
sonraki:
Next
Set Hedef = Nothing
End Sub
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Buda farklı bir kod:

Kod:
Dim Kaynak As String
Dim Sayfa_Adı As String
Dim dosya_adı As String
Sub Start()
Sayfa_Adı = ActiveSheet.Name
dosya_adı = ActiveWorkbook.Name
Set Klasor = CreateObject("shell.application").BrowseForFolder(0, "Lütfen bir klasör seçiniz", 50, &H0)
If Not Klasor Is Nothing Then
Kaynak = Klasor.SELF.Path
If InStr(1, Kaynak, "{") > 0 Then GoTo Atla
Application.ScreenUpdating = False
sat1 = ThisWorkbook.Sheets.Count
sayfaadi2 = Sheets(sat1).Name
uzanti2 = CreateObject("Scripting.FileSystemObject").GetExtensionName(ThisWorkbook.Name)
If Len(uzanti2) = 3 Then
Liste1 (Kaynak)
Else
Liste2 (Kaynak)
End If
Sheets(sayfaadi2).Move Before:=Sheets(sat1)
Application.DisplayAlerts = False
Sheets(Sayfa_Adı).Select
MsgBox "işlem tamam"
Else
Atla:
MsgBox "Lütfen Kaynak Klasör Seçimini Yapınız !", vbInformation, "DİKKAT"
End If
Set Klasor = Nothing
End Sub
 
Private Sub Liste1(yol As String)
Dim fL As Object, fs As Object, f As Object
Set fL = CreateObject("Scripting.FileSystemObject").GetFolder(yol).SubFolders
Set fs = CreateObject("Scripting.FileSystemObject").GetFolder(yol).Files
Dim wb As Workbook
For Each Dosya In fs
uzanti = CreateObject("Scripting.FileSystemObject").GetExtensionName(Dosya)
If uzanti = "xls" Then
If ThisWorkbook.Name <> Dosya.Name Then
Set wb = Workbooks.Open(Dosya)
dosyaadi = CreateObject("Scripting.FileSystemObject").GetBaseName(Dosya)
For i = 1 To ActiveWorkbook.Sheets.Count
Sheets(i).Name = dosyaadi & "(" & Sheets(i).Name & ")"
Next
ActiveWorkbook.Worksheets.Select
Sheets(1).Activate
sat = ThisWorkbook.Sheets.Count
ActiveWorkbook.Worksheets.Copy Before:=Workbooks(dosya_adı).Sheets(sat)
wb.Close False
End If
End If
Next

On Error GoTo sonraki
For Each f In fL
Liste1 (f.Path)
sonraki:
Next
Set Hedef = Nothing
End Sub
 
Private Sub Liste2(yol As String)
Dim fL As Object, fs As Object, f As Object
Set fL = CreateObject("Scripting.FileSystemObject").GetFolder(yol).SubFolders
Set fs = CreateObject("Scripting.FileSystemObject").GetFolder(yol).Files
Dim wb As Workbook
For Each Dosya In fs
uzanti = CreateObject("Scripting.FileSystemObject").GetExtensionName(Dosya)
If uzanti = "xls" Or uzanti = "xlsx" Or uzanti = "xlsm" Then
If ThisWorkbook.Name <> Dosya.Name Then
Set wb = Workbooks.Open(Dosya)
dosyaadi = CreateObject("Scripting.FileSystemObject").GetBaseName(Dosya)
For i = 1 To ActiveWorkbook.Sheets.Count
Sheets(i).Name = dosyaadi & "(" & Sheets(i).Name & ")"
Next
ActiveWorkbook.Worksheets.Select
Sheets(1).Activate
sat = ThisWorkbook.Sheets.Count
ActiveWorkbook.Worksheets.Copy Before:=Workbooks(dosya_adı).Sheets(sat)
wb.Close False
End If
End If
Next
On Error GoTo sonraki
For Each f In fL
Liste2 (f.Path)
sonraki:
Next
Set Hedef = Nothing
End Sub
 

Ekli dosyalar

Katılım
24 Temmuz 2014
Mesajlar
2
Excel Vers. ve Dili
Office 2010 English
Buda farklı bir kod:

Kod:
Dim Kaynak As String
Dim Sayfa_Adı As String
Dim dosya_adı As String
Sub Start()
Sayfa_Adı = ActiveSheet.Name
dosya_adı = ActiveWorkbook.Name
Set Klasor = CreateObject("shell.application").BrowseForFolder(0, "Lütfen bir klasör seçiniz", 50, &H0)
If Not Klasor Is Nothing Then
Kaynak = Klasor.SELF.Path
If InStr(1, Kaynak, "{") > 0 Then GoTo Atla
Application.ScreenUpdating = False
sat1 = ThisWorkbook.Sheets.Count
sayfaadi2 = Sheets(sat1).Name
uzanti2 = CreateObject("Scripting.FileSystemObject").GetExtensionName(ThisWorkbook.Name)
If Len(uzanti2) = 3 Then
Liste1 (Kaynak)
Else
Liste2 (Kaynak)
End If
Sheets(sayfaadi2).Move Before:=Sheets(sat1)
Application.DisplayAlerts = False
Sheets(Sayfa_Adı).Select
MsgBox "işlem tamam"
Else
Atla:
MsgBox "Lütfen Kaynak Klasör Seçimini Yapınız !", vbInformation, "DİKKAT"
End If
Set Klasor = Nothing
End Sub
 
Private Sub Liste1(yol As String)
Dim fL As Object, fs As Object, f As Object
Set fL = CreateObject("Scripting.FileSystemObject").GetFolder(yol).SubFolders
Set fs = CreateObject("Scripting.FileSystemObject").GetFolder(yol).Files
Dim wb As Workbook
For Each Dosya In fs
uzanti = CreateObject("Scripting.FileSystemObject").GetExtensionName(Dosya)
If uzanti = "xls" Then
If ThisWorkbook.Name <> Dosya.Name Then
Set wb = Workbooks.Open(Dosya)
dosyaadi = CreateObject("Scripting.FileSystemObject").GetBaseName(Dosya)
For i = 1 To ActiveWorkbook.Sheets.Count
Sheets(i).Name = dosyaadi & "(" & Sheets(i).Name & ")"
Next
ActiveWorkbook.Worksheets.Select
Sheets(1).Activate
sat = ThisWorkbook.Sheets.Count
ActiveWorkbook.Worksheets.Copy Before:=Workbooks(dosya_adı).Sheets(sat)
wb.Close False
End If
End If
Next

On Error GoTo sonraki
For Each f In fL
Liste1 (f.Path)
sonraki:
Next
Set Hedef = Nothing
End Sub
 
Private Sub Liste2(yol As String)
Dim fL As Object, fs As Object, f As Object
Set fL = CreateObject("Scripting.FileSystemObject").GetFolder(yol).SubFolders
Set fs = CreateObject("Scripting.FileSystemObject").GetFolder(yol).Files
Dim wb As Workbook
For Each Dosya In fs
uzanti = CreateObject("Scripting.FileSystemObject").GetExtensionName(Dosya)
If uzanti = "xls" Or uzanti = "xlsx" Or uzanti = "xlsm" Then
If ThisWorkbook.Name <> Dosya.Name Then
Set wb = Workbooks.Open(Dosya)
dosyaadi = CreateObject("Scripting.FileSystemObject").GetBaseName(Dosya)
For i = 1 To ActiveWorkbook.Sheets.Count
Sheets(i).Name = dosyaadi & "(" & Sheets(i).Name & ")"
Next
ActiveWorkbook.Worksheets.Select
Sheets(1).Activate
sat = ThisWorkbook.Sheets.Count
ActiveWorkbook.Worksheets.Copy Before:=Workbooks(dosya_adı).Sheets(sat)
wb.Close False
End If
End If
Next
On Error GoTo sonraki
For Each f In fL
Liste2 (f.Path)
sonraki:
Next
Set Hedef = Nothing
End Sub
bu kod tüm sorunları çözmüş. sırf size teşekkür etmek için üye oldum, beni çok büyük dertten kurtardınız:) teşekkürler.
 
Üst