Kapalı (Klasör içinde) Dosyalarda çoklu sayfa kopyalama.

Katılım
21 Ocak 2013
Mesajlar
331
Excel Vers. ve Dili
2003 Türkçe
Merhabalar.

Klasör içinde dosylarımın tamamında "Ahmet" isimli sayfa var.
Aynı kitap içine bu sayfalardan 5 er adet kopya almak istiyorum.

Aşağıdaki kod Halit Hocama ait bu kod ile
her seferinde 1 sayfa kopyalanıyor. Kod düzeltilmeye
müsait ise düzeltme; yoksa şayet yeni kod yazılabilinirse çok
sevinirim.

Saygılarımla.

Kod:
Dim bulunan As String
Dim aranan As String
Dim deg1 As String
Sub Dosya_Listele7()
aranan = InputBox("değiştireceğiniz veya sileceğiniz veya kopyalıyacağınız sayfa adını yaz.", "aranan değer", "")
If aranan = "" Then
MsgBox "İşlemi iptal ettiniz"
Exit Sub
End If
bulunan = InputBox("Eğer değiştirecek veya kopyalıyacaksanız yeni sayfa adını yazın silecekseniz rasgele birşey yazın.", "değiştiren değer", "")
If bulunan = "" Then
MsgBox "İşlemi iptal ettiniz"
Exit Sub
End If

a = MsgBox("Sayfa adı değiştirmek için      EVET  tıklayınız. " & Chr(10) & Chr(10) & _
"sayfayı silmek için    HAYIR  tıklayınız. " & Chr(10) & Chr(10) & _
"sayfayı kopyalamak için       İPTAL  tıklayınız. ?", vbYesNoCancel + vbInformation, " Uyarı")
If a = vbYes Then
deg1 = 1
End If
If a = vbNo Then
deg1 = 2
End If
If a = vbCancel Then
deg1 = 3
End If

Set Klasor = CreateObject("shell.application").BrowseForFolder(0, "Kaynak Dosyaları İçeren Klasörü Seçin", 50, &H0)
If Not Klasor Is Nothing Then
Kaynak = Klasor.SELF.Path
If InStr(1, Kaynak, "{") > 0 Then GoTo Atla
Application.ScreenUpdating = False
Liste4 (Kaynak)
Application.ScreenUpdating = True
Set Klasor = Nothing
MsgBox "işlem tamam"
Else
Atla:
MsgBox "Lütfen Kaynak Klasör Seçimini Yapınız !", vbInformation, "DİKKAT"
End If
End Sub
Private Sub Liste4(yol As String)
Dim fL As Object, fs As Object, f As Object, j As Long, n As Long
Set fL = CreateObject("Scripting.FileSystemObject").GetFolder(yol).subfolders
Set fs = CreateObject("Scripting.FileSystemObject").GetFolder(yol).Files
For Each Dosya In fs
If ThisWorkbook.Name <> Dosya.Name Then
Dim wb As Workbook
Set wb = Workbooks.Open(Dosya)
For Each syf In Workbooks(Dir(Dosya)).Worksheets
Sheets(syf.Name).Select
If syf.Name = aranan Then
If deg1 = 1 Then
'değiştir
Sheets(syf.Name).Name = bulunan
Exit For
ElseIf deg1 = 2 Then
'sil
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
Exit For
'kopyala
ElseIf deg1 = 3 Then
Sheets(syf.Name).Copy After:=Sheets(ActiveWorkbook.Sheets.Count)
Sheets(ActiveSheet.Name).Name = bulunan
Exit For
End If
End If
Next syf
ActiveWorkbook.Save
ActiveWorkbook.Close
End If
Next
On Error GoTo sonraki
For Each f In fL
Liste4 (f.Path)
sonraki:
Next
Set fL = Nothing
End Sub
 

Ekli dosyalar

asi_kral

Özel Üye
Katılım
22 Şubat 2012
Mesajlar
2,833
Excel Vers. ve Dili
Excel 2007 Türkçe
Merhaba
Mesela Kitap 1'deki Ahmet - sayfasını kitap 1 içinde mi 5 adet kopyalamak istiyorsunuz.
Bunu kopyaladığımız da sayfa adları ne olacak.
 
Katılım
21 Ocak 2013
Mesajlar
331
Excel Vers. ve Dili
2003 Türkçe
Merhabalar Sayın Kral.

Evet aynı kitap içine kopyalanacak.
İnputboxta bana sorar ise şayet (Kodun bu şekilde yazılmasını çok istiyorum :))
Orada ben yanıtlayacağım sayfa adlarını. Teşekkür ederim.
 
Katılım
21 Ocak 2013
Mesajlar
331
Excel Vers. ve Dili
2003 Türkçe
Merhabalar Halit Hocam
Bahsettiğiniz menüdeki kod dosyayı seçme aşamasında hata veriyor
dolayısı ile içeriğinin ne olduğunu anlayamadım maalesef.
Başkaca kodlarada baktım lakin benim isteğime karşılık gelecek kod bulamadım.

Üstteki kod kusursuz çokda da kullanışlı. Sorun şuki benim dosya boyutları büyük 15 mb gibi
ve de sayıları çok fazla olduğu için yapılan işlemler uzun sürüyor. Buna istinaden
bir seferde 5 kez kopyalama istemekteyim.
Eğer zamanınız olurda revizyona giderseniz müteşekkir olurum.

Saygılarımla.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Merhabalar Halit Hocam
Bahsettiğiniz menüdeki kod dosyayı seçme aşamasında hata veriyor
dolayısı ile içeriğinin ne olduğunu anlayamadım maalesef.
Başkaca kodlarada baktım lakin benim isteğime karşılık gelecek kod bulamadım.

Üstteki kod kusursuz çokda da kullanışlı. Sorun şuki benim dosya boyutları büyük 15 mb gibi
ve de sayıları çok fazla olduğu için yapılan işlemler uzun sürüyor. Buna istinaden
bir seferde 5 kez kopyalama istemekteyim.
Eğer zamanınız olurda revizyona giderseniz müteşekkir olurum.

Saygılarımla.
ek silindi
 

asi_kral

Özel Üye
Katılım
22 Şubat 2012
Mesajlar
2,833
Excel Vers. ve Dili
Excel 2007 Türkçe
Merhaba
Bu kodu boş bir dosyaya ekleyin ve bu dosya Kapalı Dosyalar Klasörünün olduğu yerde olsun.
Örneğin : D:\xxx\Kapalı Dosyalar ise
bu dosyanın olması gereken bölüm
D:\xxx de olmalı
5 Adet sayfa kopyalar her dosyaya ve her sayfa ismini size sorar.
Kod:
Option Explicit
Sub kopyala()
Dim XCL As Application, KTP As Workbook
Dim S1 As Worksheet, AD As Variant, KPY As Long
Dim YOL As String, DSY As String
Application.ScreenUpdating = False
Set XCL = CreateObject("Excel.Application")
XCL.Visible = False
YOL = ThisWorkbook.Path & "\Kapalı Dosyalar\"
DSY = Dir(YOL & "*.xls?")
Do While DSY <> ""
Set KTP = XCL.Workbooks.Open(YOL & DSY)
Set S1 = KTP.Sheets("Ahmet")
For KPY = 1 To 5
AD = InputBox("Sayfa Adı Girişi", "Sayfa Adı")
If AD <> Empty Then
S1.Copy , KTP.Sheets(KTP.Sheets.Count)
KTP.Sheets(KTP.Sheets.Count).Name = AD
ad=empty
End If
Next
KTP.Save: XCL.Quit
DSY = Dir
Loop
Application.ScreenUpdating = True
End Sub
 
Katılım
21 Ocak 2013
Mesajlar
331
Excel Vers. ve Dili
2003 Türkçe
Merhabalar
Değerli Üstadlarım.

Sayın Halit Hocam
Görsel eki izledim alakanız için
birkez daha teşekkür ederim.


Sayın Asi Kral
Makro hiç bir tepki vermedi bende.
Acaba ben Makronun bulunması gerekn yeri
ayarlayamamış olabilirmiyim ?

Ekli dosyada
"Kral Makro" adlı kitaba kodu ekledim.
Diğer dosyalarda mevcut.
kodu çalıptırap tekrardan yükleyebilirseniz şayet çok sevineceğim.

Saygılarımla.
 

Ekli dosyalar

asi_kral

Özel Üye
Katılım
22 Şubat 2012
Mesajlar
2,833
Excel Vers. ve Dili
Excel 2007 Türkçe
Merhaba
kod çalışıyor ama ilk eklediğiniz dosyada Kapalı Dosyalar yazıyordu bu eklediğiniz dosyada ise KAPALI DOSYALAR yazıyor klasör isminde burayı değiştirdiğiniz takdirde kod çalışacaktır.
Kod:
Option Explicit
Sub kopyala()
Dim XCL As Application, KTP As Workbook
Dim S1 As Worksheet, AD As Variant, KPY As Long
Dim YOL As String, DSY As String
Application.ScreenUpdating = False
Set XCL = CreateObject("Excel.Application")
XCL.Visible = False
[COLOR="Red"]YOL = ThisWorkbook.Path & "\KAPALI DOSYALAR\"[/COLOR]
DSY = Dir(YOL & "*.xls?")
Do While DSY <> ""
Set KTP = XCL.Workbooks.Open(YOL & DSY)
Set S1 = KTP.Sheets("Ahmet")
For KPY = 1 To 5
AD = InputBox("Sayfa Adı Girişi", "Sayfa Adı")
If AD <> Empty Then
S1.Copy , KTP.Sheets(KTP.Sheets.Count)
KTP.Sheets(KTP.Sheets.Count).Name = AD
AD = Empty
End If
Next
KTP.Save: XCL.Quit
DSY = Dir
Loop
Application.ScreenUpdating = True
End Sub
Üstte kırmızı olarak belirttiğim yer Yol bilgisidir.
 
Katılım
21 Ocak 2013
Mesajlar
331
Excel Vers. ve Dili
2003 Türkçe
Merhaba Sayın Kral

Küçük bir yanlış anlama olmuş. Bana bağlı olarak.
özür dilerim.

Durum şu. Şuan için klasörde 3 kitabımız mevcut.
Kod benden 15 adet isim istiyor.
Halbuki 5 isim istemesi gerekli. Bütün kitaplarda sayfa çoğaltmalar aynı isimle olacak.
Kitap 1 Kopya alınacak sayfa "Ahmet" kopyaya verilecek isim : say44, say55, say66, say77, say88,
Kitap 2 Kopya alınacak sayfa "Ahmet" kopyaya verilecek isim : say44, say55, say66, say77, say88,
Kitap 3 Kopya alınacak sayfa "Ahmet" kopyaya verilecek isim : say44, say55, say66, say77, say88,
Kitap ... Kopya alınacak sayfa "Ahmet" kopyaya verilecek isim : say44, say55, say66, say77, say88,
Kitap ... Kopya alınacak sayfa "Ahmet" kopyaya verilecek isim : say44, say55, say66, say77, say88,
klasörde kaç tane kitap var ise zaten hepsinde Ahmet var. Aynı işlem klasör içindeki tüm kitaplara uygulanacak
sabit bir miktar yok.

bunun yanı sıra uygulama yapılacak klasörü de seçme imkanımız olursa çok iyi olur.
Çünkü aynı yerde birden fazla klasör var ve büyük ihtimal kilitenme yapabilir. Ben
hala P2 pc kullanıyorum :=(

düzeltebilirmisin acaba?
 

asi_kral

Özel Üye
Katılım
22 Şubat 2012
Mesajlar
2,833
Excel Vers. ve Dili
Excel 2007 Türkçe
Merhaba Sayın Kral

Küçük bir yanlış anlama olmuş. Bana bağlı olarak.
özür dilerim.

Durum şu. Şuan için klasörde 3 kitabımız mevcut.
Kod benden 15 adet isim istiyor.
Halbuki 5 isim istemesi gerekli. Bütün kitaplarda sayfa çoğaltmalar aynı isimle olacak.
Kitap 1 Kopya alınacak sayfa "Ahmet" kopyaya verilecek isim : say44, say55, say66, say77, say88,
Kitap 2 Kopya alınacak sayfa "Ahmet" kopyaya verilecek isim : say44, say55, say66, say77, say88,
Kitap 3 Kopya alınacak sayfa "Ahmet" kopyaya verilecek isim : say44, say55, say66, say77, say88,
Kitap ... Kopya alınacak sayfa "Ahmet" kopyaya verilecek isim : say44, say55, say66, say77, say88,
Kitap ... Kopya alınacak sayfa "Ahmet" kopyaya verilecek isim : say44, say55, say66, say77, say88,
klasörde kaç tane kitap var ise zaten hepsinde Ahmet var. Aynı işlem klasör içindeki tüm kitaplara uygulanacak
sabit bir miktar yok.

bunun yanı sıra uygulama yapılacak klasörü de seçme imkanımız olursa çok iyi olur.
Çünkü aynı yerde birden fazla klasör var ve büyük ihtimal kilitenme yapabilir. Ben
hala P2 pc kullanıyorum :=(

düzeltebilirmisin acaba?
Merhaba
Bu kodu dener misiniz_?
Kod:
Option Explicit
Sub kopyala()
Dim XCL As Application, KTP As Workbook
Dim S1 As Worksheet, AD As Variant, KPY As Long
Dim YOL, DSY As String, KLS
Application.ScreenUpdating = False
Set XCL = CreateObject("Excel.Application")
XCL.Visible = False
Set KLS = CreateObject("Shell.Application")
Set YOL = KLS.BrowseForFolder(0, "Klasör Seçin", 0)
YOL = YOL.items.Item.Path & "\"
For KPY = 1 To 5
AD = InputBox("Sayfa Adı Girişi", "Sayfa Adı")
If AD <> Empty Then
DSY = Dir(YOL & "*.xls?")
Do While DSY <> ""
Set KTP = XCL.Workbooks.Open(YOL & DSY)
Set S1 = KTP.Sheets("Ahmet")
S1.Copy , KTP.Sheets(KTP.Sheets.Count)
KTP.Sheets(KTP.Sheets.Count).Name = AD
KTP.Save: XCL.Quit
DSY = Dir
Loop
End If
Next
Application.ScreenUpdating = True
End Sub
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
1 nolu mesajdaki kodun aşağıdaki bölümüne

Kod:
ElseIf deg1 = 3 Then
[COLOR=red]Sheets(ActiveSheet.Name).Name = bulunan[/COLOR]
Exit For
End If
Kırmızı yeri aşağıdaki kırmızı yer ile değiştirin.


Kod:
ElseIf deg1 = 3 Then
[COLOR=red]For k = 1 To 5
Sheets(syf.Name).Copy After:=Sheets(ActiveWorkbook.Sheets.Count)
Sheets(ActiveSheet.Name).Name = bulunan & k
Next
[/COLOR]Exit For
End If
Burada ki (bulunan & k) k değerini kendiniz belirleyin.
 
Katılım
21 Ocak 2013
Mesajlar
331
Excel Vers. ve Dili
2003 Türkçe
Merhabalar;

Sayın Asi Kral.
Kod kusursuz çalışyor ellerinize sağlık.
Aynı anda istenilen adet kadar kopyalama yapıp
hepsini adlandırma alternatifi var.
Lakin kod çok yavaş. :(
İsimleri kopyalanacak sayı kadar ayrı ayrı soruyor. Birtanesini yapıp sonra
diğerine geçiyor yavaşlığa sebep belki bu olabilir.

Sayın Halit3 Hocam.
Bahsettiğiniz yönlendirmeyi yaptım.
İstenilen kadar kopya yapıyor kop1 kop2 kop3 gibi. Yapılan kopyaları aynı anda isimlendirse idi
süper olacaktı. Bu kopyalanan sayfaların ismini değiştirmek için tekrardan işlem yaptığımız için
kod cazibesini yitiriyor. (Aynı kod içinde isim değiştirme menüsüde var)

Maalesef başlık amacına ulaşamadı. Çünkü Halit Hocamın 1 Nolu mesajdaki kodu
(Halen kullanmakta olduğum kod) Kopya ve adlandırmaları tek tek yaptığı halde.
Yeni alternatiflere göre %20 ye yakın zamandan kazandırıyor.
Ümid ediyorum ki diğer user arkadaşlar bu yeni kodlardan ziyadesiyle
faydalanacaktır.

Emek ve alakalarınız için çok teşekkür ederim.
Ellerinize sağlık. Herşey gönlünüzce olsun inşallah
Sayğılarımla.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Yeni sayfa adı na öenek (deneme) yazdığınızda beş adet kopyalama yapıyor sayfa isimlerinide deneme1, deneme2, deneme3, deneme4, deneme5 olarak yapıyor siz bu isimlerin ne olmasını istiyorsunuz.
 

halit3

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

Kod:
Dim bulunan As String
Dim aranan As String
Dim deg1 As String
Sub Dosya_Listele7()
aranan = InputBox("değiştireceğiniz veya sileceğiniz veya kopyalıyacağınız sayfa adını yaz.", "aranan değer", "")
If aranan = "" Then
MsgBox "İşlemi iptal ettiniz"
Exit Sub
End If
bulunan = InputBox("Eğer değiştirecek veya kopyalıyacaksanız yeni sayfa adını yazın silecekseniz rasgele birşey yazın.", "değiştiren değer", "")
If bulunan = "" Then
MsgBox "İşlemi iptal ettiniz"
Exit Sub
End If

a = MsgBox("Sayfa adı değiştirmek için      EVET  tıklayınız. " & Chr(10) & Chr(10) & _
"sayfayı silmek için    HAYIR  tıklayınız. " & Chr(10) & Chr(10) & _
"sayfayı kopyalamak için       İPTAL  tıklayınız. ?", vbYesNoCancel + vbInformation, " Uyarı")
If a = vbYes Then
deg1 = 1
End If
If a = vbNo Then
deg1 = 2
End If
If a = vbCancel Then
deg1 = 3
End If

Set Klasor = CreateObject("shell.application").BrowseForFolder(0, "Kaynak Dosyaları İçeren Klasörü Seçin", 50, &H0)
If Not Klasor Is Nothing Then
Kaynak = Klasor.SELF.Path
If InStr(1, Kaynak, "{") > 0 Then GoTo Atla
Application.ScreenUpdating = False
Liste4 (Kaynak)
Application.ScreenUpdating = True
Set Klasor = Nothing
MsgBox "işlem tamam"
Else
Atla:
MsgBox "Lütfen Kaynak Klasör Seçimini Yapınız !", vbInformation, "DİKKAT"
End If
End Sub
Private Sub Liste4(yol As String)
Dim fL As Object, fs As Object, f As Object, j As Long, n As Long
Set fL = CreateObject("Scripting.FileSystemObject").GetFolder(yol).subfolders
Set fs = CreateObject("Scripting.FileSystemObject").GetFolder(yol).Files

[COLOR="Red"]ReDim say(5)
say(1) = 44
say(2) = 55
say(3) = 66
say(4) = 77
say(5) = 88
[/COLOR]
For Each Dosya In fs
If ThisWorkbook.Name <> Dosya.Name Then
Dim wb As Workbook
Set wb = Workbooks.Open(Dosya)
For Each syf In Workbooks(Dir(Dosya)).Worksheets
Sheets(syf.Name).Select
If syf.Name = aranan Then
If deg1 = 1 Then
'değiştir
Sheets(syf.Name).Name = bulunan
Exit For
ElseIf deg1 = 2 Then
'sil
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
Exit For
'kopyala
ElseIf deg1 = 3 Then

[COLOR="red"]For k = 1 To 5
Sheets(syf.Name).Copy After:=Sheets(ActiveWorkbook.Sheets.Count)
Sheets(ActiveSheet.Name).Name = bulunan & say(k)
Next[/COLOR]

Exit For
End If
End If
Next syf
ActiveWorkbook.Save
ActiveWorkbook.Close
End If
Next
On Error GoTo sonraki
For Each f In fL
Liste4 (f.Path)
sonraki:
Next
Set fL = Nothing
End Sub
 
Katılım
21 Ocak 2013
Mesajlar
331
Excel Vers. ve Dili
2003 Türkçe
Merhabalar

Gayretiniz için minnetarım Halit Hocam
herşey gönlünüzce olsun inşallah.

Hocam tam olarak şunu istemekteyim.
Şayet mümkünatı var ise.

Klasör içindeki kitaplarda adı sürekli sabit olan "Ahmet" adlı sayfadan
yeni kopyalar alacağım ve adlandıracağım.

Nasıl olsun istiyorum:

** Kod çalışmazdan önce kodun içine girip kaç adet sayfa kopyalamam
gerekiyor ise manuel olarak o rakamı yazacağım.

** Kodu çalıştıracağım ve Inputbox penceresi gelecek ve kod bana kopyası alınacak sayfayı soracak
(sabit olduğu için sormayadabilir.)

** Son adımda ise kopyalanacak sayfaların adının ne olması gerektiğini soracak ve ben inputboxa yazacağım.
Kaç kez kopya alıncak ise o kadar soracak. Ve işlem bitecek.

Bu işlemi tek 1 sayfa kopyalama ve adlandırma olarak sizin kodunuz var şuan için kullanıyorum.
Başlıktada belirttiğim gibi 3 4 5 hatta 10 kadar kopya almam ve adlandırmam gereken durumlar olduğu için
zaman kazanma gayretindeyim.

Saygılarımla.
 
Son düzenleme:

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Ben hala anlıyamadım örnek olarak ahmet sayfasını beş adet kapyalıyacak bu sayfaların adları nasıl olacak her birini InputBox ilemi gireceksiniz yoksa bir sıralama düzenindemi olacak.

14 nolu mesajda bunu sormuştum.
 
Katılım
21 Ocak 2013
Mesajlar
331
Excel Vers. ve Dili
2003 Türkçe
Yeni oluşturulacak sayfa adlarının
tamamını inputbox ile gireceğim Halit Hocam
 

halit3

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

Kod:
Dim bulunan As String
Dim aranan As String
Dim deg1 As String
Dim deg2 As String
Dim adet As Long
Sub Dosya_Listele7()
aranan = InputBox("değiştireceğiniz veya sileceğiniz veya kopyalıyacağınız sayfa adını yaz.", "aranan değer", "")
If aranan = "" Then
MsgBox "İşlemi iptal ettiniz"
Exit Sub
End If

a = MsgBox("Sayfa adı değiştirmek için      EVET  tıklayınız. " & Chr(10) & Chr(10) & _
"sayfayı silmek için    HAYIR  tıklayınız. " & Chr(10) & Chr(10) & _
"sayfayı kopyalamak için       İPTAL  tıklayınız. ?", vbYesNoCancel + vbInformation, " Uyarı")
If a = vbYes Then
deg1 = 1
End If
If a = vbNo Then
deg1 = 2

bulunan = InputBox("Değiştirecek yeni sayfa adını yazın ", "değiştiren değer", "")
If bulunan = "" Then
MsgBox "İşlemi iptal ettiniz"
Exit Sub
End If

End If
If a = vbCancel Then
deg1 = 3
deg2 = 0
adet = Application.InputBox("Kaç adet kopya alınacak.", "Kopya sayısı", "1", 400, 30, , Type:=1)
If adet = False Or Val(adet) <= 0 Then
MsgBox "İşlemi iptal ettiniz"
Exit Sub
Else
deg2 = 1
End If
End If


Set Klasor = CreateObject("shell.application").BrowseForFolder(0, "Kaynak Dosyaları İçeren Klasörü Seçin", 50, &H0)
If Not Klasor Is Nothing Then
Kaynak = Klasor.SELF.Path
If InStr(1, Kaynak, "{") > 0 Then GoTo Atla
Application.ScreenUpdating = False
Liste4 (Kaynak)
Application.ScreenUpdating = True
Set Klasor = Nothing
MsgBox "işlem tamam"
Else
Atla:
MsgBox "Lütfen Kaynak Klasör Seçimini Yapınız !", vbInformation, "DİKKAT"
End If
End Sub
Private Sub Liste4(yol As String)
Dim fL As Object, fs As Object, f As Object, j As Long, n As Long
Set fL = CreateObject("Scripting.FileSystemObject").GetFolder(yol).subfolders
Set fs = CreateObject("Scripting.FileSystemObject").GetFolder(yol).Files

For Each Dosya In fs
If ThisWorkbook.Name <> Dosya.Name Then
Dim wb As Workbook
Set wb = Workbooks.Open(Dosya)
For Each syf In Workbooks(Dir(Dosya)).Worksheets
Sheets(syf.Name).Select
If syf.Name = aranan Then
If deg1 = 1 Then
'değiştir
Sheets(syf.Name).Name = bulunan
Exit For
ElseIf deg1 = 2 Then
'sil
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
Exit For
'kopyala
ElseIf deg1 = 3 Then
If deg2 = 1 Then
For k = 1 To Val(adet)
bulunan = InputBox("yeni sayfa adını yazın", "Sayfa adı", "")
If bulunan = "" Then
MsgBox "İşlemi iptal ettiniz"
Else
Sheets(syf.Name).Copy After:=Sheets(ActiveWorkbook.Sheets.Count)
Sheets(ActiveSheet.Name).Name = bulunan
End If
Next
End If

Exit For
End If
End If
Next syf
ActiveWorkbook.Save
ActiveWorkbook.Close
End If
Next
On Error GoTo sonraki
For Each f In fL
Liste4 (f.Path)
sonraki:
Next
Set fL = Nothing
End Sub
 
Katılım
21 Ocak 2013
Mesajlar
331
Excel Vers. ve Dili
2003 Türkçe
Söyleyecek söz bulamıyorum vallahi.
Bu kadar olur yani.

Halit Hocam Allah ne muradınız var ise
nasip etsin inşallah.
 
Üst