Bir Kitaptan Diğerine Makro ile Kopyalama ve Yapıştırma

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

ERMAN.SAYINALP

Kullanıcı
Katılım
3 Eki 2017
Mesajlar
108
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Merhaba,

Bir Kitabın (Kaynak) (ör: Sayfa1) Sayfasından, bir başka Kitabın (Hedef) (ör:Sayfa1) Sayfasına Verileri taşımak istiyorum.

Koşullar;
  • Kaynak Sayfadan KOPYALA, Hedef Sayfaya YAPIŞTIR-DEĞERLER mantığıyla olmalı,
  • Makro Yeri HEDEF Dosyada olmalı,
  • Makro Tetiklendiğinde, KAYNAK Dosya Konumunu sormalı,
  • Yol gösterildiğinde, işlem sonuçlandırılmalı,
Taşınacak Veri Hücreleri;
  • Kaynak C2 --- Hedef C2
  • Kaynak D2 --- Hedef D2
  • Kaynak F2 --- Hedef F2
  • Kaynak C16 --- Hedef C18
  • Kaynak F16 : G16 --- Hedef F18 : G18
  • Kaynak C17 : G10000 --- Hedef C19 : G10000
  • Kaynak I16 : I10000 --- Hedef I18 : I10000
Konuya ilişkin bir MAKRO yazabilirseniz çok memnun olurum.

Görüşmek dileğiyle...
 
Çözüm
Merhaba Sayın @erman SAYINALP .
Aşağıdaki kodu kullanabilirsiniz.
-- Verinin yapıştırılacağı (kodu yerleştireceğiniz) belgede ERMAN isimli sayfaya aktarma yapılır.
-- Verinin alınacağı kaynak belgede Sayfa1 isimli bir sayfa olup olmadığı kontrol edilir, yoksa işlem yapılmadan kod sonlandırılır.
Koddaki sayfa isimlerini kontrol ediniz.
VBA:
İndirmek için giriş yapmanız gerekmektedir.
(11 satır)
Merhaba Sayın @erman SAYINALP .
Aşağıdaki kodu kullanabilirsiniz.
-- Verinin yapıştırılacağı (kodu yerleştireceğiniz) belgede ERMAN isimli sayfaya aktarma yapılır.
-- Verinin alınacağı kaynak belgede Sayfa1 isimli bir sayfa olup olmadığı kontrol edilir, yoksa işlem yapılmadan kod sonlandırılır.
Koddaki sayfa isimlerini kontrol ediniz.
VBA:
İndirmek için giriş yapmanız gerekmektedir.
(44 satır)
 
Çözüm
Değerli Üstadım,

Hazırladığınız Kodlamada;

bir = .Sheets("Sayfa1").[C2].Value
iki = .Sheets("Sayfa1").[D2].Value
uc = .Sheets("Sayfa1").[F2].Value
dort = .Sheets("Sayfa1").[C16].Value
bes = .Sheets("Sayfa1").[F16:G16].Value
alti = .Sheets("Sayfa1").[C17:G10000].Value
yedi = .Sheets("Sayfa1").[I16:I10000].Value
.Close 0
End With
ThisWorkbook.Activate
.Sheets("ERMAN").[C2] = bir
.Sheets("ERMAN").[D2] = iki
.Sheets("ERMAN").[F2] = uc
.Sheets("ERMAN").[C18] = dort
.Sheets("ERMAN").[F18:G18] = bes
.Sheets("ERMAN").[C19].Resize(UBound(alti)) = alti
.Sheets("ERMAN").[I18].Resize(UBound(yedi)) = yedi
MsgBox "Veriler Aktarıldı.", vbInformation

olan satırları,

.Sheets("ERMAN").[C19:G10000] = alti
.Sheets("ERMAN").[I18:I10000] = yedi

biçiminde düzelttim ve mükemmel sonuç aldım, emeğinize sağlık, çok teşekkür ederim.

Görüşmek dileğimle...
 
Mesajı eksik göndermişsiniz sanırım, cümle yarım kalmış.
O satırların neyini merak ediyorsunuz acaba?

Kod'da fark edeceğiniz gibi ...COPY ibaresi yok.
Aktarılacak veriler bir, iki,.... gibi değişkene (hafızaya) alınıp açılan belge kapatılıyor.
Sonra da, hafızaya alınan veriler hedef adreslere yazdırılıyor, Aslında MsgBox "Veriler Aktarıldı.", vbInformation satırının hemen üstüne
bir = Empty: iki = Empty....(tümünü tek tek yazarak) şeklinde bir satır ekleyerek hafızayı boşaltmak da yerinde olur.
.
 
Ömer bey merhaba,

Kodlamadaki Resize(UBound(alti)) ve Resize(UBound(yedi)) bölümler HATA verdi. Bunları silince çalıştı. Bunu anlatmaya çalıştım.
Ayrıca küçük bir düzeltme ihtiyacı daha doğdu, o da şudur;

Kod:
İndirmek için giriş yapmanız gerekmektedir.
(25 satır)

kısmında, KOD, dosya seçimini "mutlak" olarak istiyor, Buraya "Seçimden Vazgeçme" seçeneğini de ilave edilmesine ihtiyacım var.

Umarım izahım açıklayıcıdır.
Görüşmek üzere...
 
Sayın @ERMAN SAYINALP .
Deneme yapmadan cevap yazmam ama herneyse, istediğiniz sonucu aldığınıza göre mesele yok.

Son cevaptaki hususa gelince; üstteki yeniden:: satırını silin, aşağıdaki GoTo yeniden satırının yerine de Exit Sub yazın.
.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Benzer Konular Popüler İçerikler Daha Fazlası
Geri
Üst Alt