ynstcrt
Altın Üye
- Katılım
- 21 Mart 2021
- Mesajlar
- 75
- Excel Vers. ve Dili
- Office 2010 - Türkçe
- Altın Üyelik Bitiş Tarihi
- 05-12-2024
Herkese iyi çalışmalar.
Amacım bir dosyadaki seçtiğim verileri kopyalayıp, istediğim başka bir dosyaya yapıştırıp, kaydetmekti. Bunu da araştıra araştıra biraz uzun bir yoldan yaptım sanırım. Çünkü Kod yazmaya yeni başladım. Yaptığım şeyi örnek dosyadaki veriler üzerinden anlatırsam benim için daha kolay olacak.
Örn; Yapıştırma Şablonu dosyası Filtrelenmiş sayfasında C4:C7 aralığındaki verileri kopyalayıp,
kapalı olan Ahmet.xlsx dosyasını açıp ( "Ahmet" değerini Yapıştırma Şablonu\ Filtrelenmiş sayfasında F3 hücresinden alarak )
Ahmet 'in içinde Mayıs sayfasını buldurtup ( "Mayıs" değerini de Yapıştırma Şablonu\ Filtrelenmiş sayfasında A8 hücresinden alarak ) ,
bu sayfada ( Yine Yapıştırma Şablonu\ Filtrelenmiş sayfasında A7 hücresinde yazılı olan değeri alarak ) 18.05.2021 yazılı sütunun altına, kopyaladığım verileri tek bir satıra yazdırıyorum.
Aynı işlemi sırasıyla C12:C15 , C20:C23 vs.. olarak C sütundaki bütün verileri alt alta satırlar halinde yazdırıp , Ahmet dosyasını kaydedip, dosyayı kapatıyorum.
Sonra bütün bu işlemi M3 hücresindeki "Mehmet" için yaptırıyorum. Tabii kopyalanacak verilerin bulunduğu sütun değişiyor "J" oluyor ve bu isimler yaklaşık 50 - 100 arasında olacak.
Fakat bunu yaparken aşağıdaki şu satır "Run_time Error 1004 Application-defined or object-defined error" hatası verdi.
'Workbooks(sablon).Sheets("Filtrelenmiş").Range(Cells(satkop, stnedt - 3), Cells(satkop + 3, stnedt - 3)).Copy
Bu satırın içindeki Range("C4:C7") yazdığımda hata vermeden çalışırken, değişken kullandığımda hep aynı hatayı aldım.
İnternetten araştırıp bir sürü yol denedim ama maalesef çözemedim. En sonunda aşağıdaki şekilde çalıştırmayı becerdim.
Workbooks(sablon).Sheets("Filtrelenmiş").Activate
Range(Cells(satkop, stnedt - 3), Cells(satkop + 3, stnedt - 3)).Copy
Ama tabii ki daha yavaş çalıştı. ScreenUpdating ' i kullanınca biraz fark etti ama isim sayıları artınca daha da yavaşlayacaktır sanırım.
Bir önceki satırda dosya yolu çalışırken neden bu satırda Activate etmem gerekti?
Muhtemelen kodları kulağı tersten gösterir gibi yazabildim, şüphesiz daha pratik birçok yöntem vardır ama sizden ricam yeni bir kod dizisi değil, biraz yavaşlasa da bu kodlar işimi görecektir. Alternatif çözümlerden çok şey öğreniyoruz kesinlikle ama öncelikle bu hatanın neden kaynaklandığını öğrenmek istiyorum. Çünkü bunun gibi onlarca farklı dosya ile uğraşıcam ve her seferinde burdan üstadların yazdığı kodlarla ilerlemek istemiyorum. Kendim yazmak istiyorum.
Yardımlarınız olursa şimdiden teşekkür ederim.
Amacım bir dosyadaki seçtiğim verileri kopyalayıp, istediğim başka bir dosyaya yapıştırıp, kaydetmekti. Bunu da araştıra araştıra biraz uzun bir yoldan yaptım sanırım. Çünkü Kod yazmaya yeni başladım. Yaptığım şeyi örnek dosyadaki veriler üzerinden anlatırsam benim için daha kolay olacak.
Örn; Yapıştırma Şablonu dosyası Filtrelenmiş sayfasında C4:C7 aralığındaki verileri kopyalayıp,
kapalı olan Ahmet.xlsx dosyasını açıp ( "Ahmet" değerini Yapıştırma Şablonu\ Filtrelenmiş sayfasında F3 hücresinden alarak )
Ahmet 'in içinde Mayıs sayfasını buldurtup ( "Mayıs" değerini de Yapıştırma Şablonu\ Filtrelenmiş sayfasında A8 hücresinden alarak ) ,
bu sayfada ( Yine Yapıştırma Şablonu\ Filtrelenmiş sayfasında A7 hücresinde yazılı olan değeri alarak ) 18.05.2021 yazılı sütunun altına, kopyaladığım verileri tek bir satıra yazdırıyorum.
Aynı işlemi sırasıyla C12:C15 , C20:C23 vs.. olarak C sütundaki bütün verileri alt alta satırlar halinde yazdırıp , Ahmet dosyasını kaydedip, dosyayı kapatıyorum.
Sonra bütün bu işlemi M3 hücresindeki "Mehmet" için yaptırıyorum. Tabii kopyalanacak verilerin bulunduğu sütun değişiyor "J" oluyor ve bu isimler yaklaşık 50 - 100 arasında olacak.
Fakat bunu yaparken aşağıdaki şu satır "Run_time Error 1004 Application-defined or object-defined error" hatası verdi.
'Workbooks(sablon).Sheets("Filtrelenmiş").Range(Cells(satkop, stnedt - 3), Cells(satkop + 3, stnedt - 3)).Copy
Bu satırın içindeki Range("C4:C7") yazdığımda hata vermeden çalışırken, değişken kullandığımda hep aynı hatayı aldım.
İnternetten araştırıp bir sürü yol denedim ama maalesef çözemedim. En sonunda aşağıdaki şekilde çalıştırmayı becerdim.
Workbooks(sablon).Sheets("Filtrelenmiş").Activate
Range(Cells(satkop, stnedt - 3), Cells(satkop + 3, stnedt - 3)).Copy
Ama tabii ki daha yavaş çalıştı. ScreenUpdating ' i kullanınca biraz fark etti ama isim sayıları artınca daha da yavaşlayacaktır sanırım.
Bir önceki satırda dosya yolu çalışırken neden bu satırda Activate etmem gerekti?
Muhtemelen kodları kulağı tersten gösterir gibi yazabildim, şüphesiz daha pratik birçok yöntem vardır ama sizden ricam yeni bir kod dizisi değil, biraz yavaşlasa da bu kodlar işimi görecektir. Alternatif çözümlerden çok şey öğreniyoruz kesinlikle ama öncelikle bu hatanın neden kaynaklandığını öğrenmek istiyorum. Çünkü bunun gibi onlarca farklı dosya ile uğraşıcam ve her seferinde burdan üstadların yazdığı kodlarla ilerlemek istemiyorum. Kendim yazmak istiyorum.
Yardımlarınız olursa şimdiden teşekkür ederim.
Ekli dosyalar
-
93.8 KB Görüntüleme: 6