Excel Makro Sayfa Tasima/Kopyalama
-
Bir test1.xlsm isimli dosyada bulunan sayfa1 ve sayfa2 isimli sayfalari baska bir excel dosyasina test2.xlsx (makrosuz) olarak kaydetmek istiyorum.
Bayaa bi kod inceledim aklimda kalanlarla ama excel üzerinde yapmak istediklerimi yapabildim (örnegin bir sayfayi oldugu gibi formuller olmadan deger ve formatiyla kopyalamak, isim degistirmek vs vs)
ama iki tane excel sayfasini baska bir excel sayfasina kopyalamayi halledemedim.
sayfayi tasirken sayfa ismini o günki tarih ile yazsa süper olur.
Ornegin. test1.xlsm deki sayfa1 isimli sayfanin ismini tasirken sayfa1-08.03.2020 olarak degistirsin.
Bir sekilde hallettim ama biraz uzun yoldan hallettim, o günkü tarih ile degistirme ve bildiginiz sayfa kopyalama makrosu bilen varsa yazarsa sevinirim
-
ups
-
Public Sub sayfayiKopyala() Dim fileName Dim closedBook As Workbook Dim currentSheet As Worksheet fileName = Application.GetOpenFilename("Excel Dosyaları (*.xlsx), *.xlsx") If fileName <> False Then Application.ScreenUpdating = False Set currentSheet = Application.ActiveSheet Set closedBook = Workbooks.Open(fileName) currentSheet.Copy After:=closedBook.Sheets(closedBook.Worksheets.Count) closedBook.Worksheets(Application.ActiveSheet.Name).Name = Application.ActiveSheet.Name & "-" & Date closedBook.Close (True) Application.ScreenUpdating = True End If End Sub -
Bu makroyu kaynak.xlsm 'e koy. Hangi sayfada çalıştırırsan o sayfayı, seçtiğin hedef.xlsx dosyasına tarih ile kopyalar.
excel sayfa isimlerinde belli bir karakter sınırlaması var,onu aşmamaya dikkat et. kontrol koymadım. Office 2019'da test edildi onaylandı--
tahmin edilen buglar:
Eğer kaynak exceldeki kopyalanan sayfa isminde hedef excelde varsa hata verebilir. Eğer hedef dosyadaki tüm isimler kaynaktakinden farklıysa sorun çıkmaz. Çözüm için önce kaynak'taki dosya adı temp bir isim ile değiştirip o isimle kopyalanır, orjinal isme göre yeniden adlandırılır, sonra kaynak excel'deki sayfanın ismi orjinale döndürülür.
NoktaliVirgul tarafından 09/Mar/20 10:01 tarihinde düzenlenmiştir -
Public Sub sayfayiKopyala() Dim fileName Dim closedBook As Workbook Dim currentSheet As Worksheet Dim originalName As String fileName = Application.GetOpenFilename("Excel Dosyaları (*.xlsx), *.xlsx") If fileName <> False Then Application.ScreenUpdating = False Set currentSheet = Application.ActiveSheet originalName = currentSheet.Name currentSheet.Name = "TmpName" Set closedBook = Workbooks.Open(fileName) currentSheet.Copy After:=closedBook.Sheets(closedBook.Worksheets.Count) closedBook.Worksheets(Application.ActiveSheet.Name).Name = originalName & "-" & Date closedBook.Close (True) currentSheet.Name = originalName Application.ScreenUpdating = True End If End Sub -
İkinci kod da bug'sız hali
---
Aynı gün iki tane kopyalamak istersen isim hatası veriyor. Eğer böyle bir durum varsa tarih ve saat olarak yanına ekletmek çözebiir.
