Soru Bir Kitaptan diğer Kitaba MAKRO ile KOPYALA-YAPIŞTIR

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

ERMAN.SAYINALP

Normal Üye
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...
 
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:
You must log in to view content
(44 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.
[Gizlenmiş içerik]

Değerli üstadım,

Deneyip size döneceğim, çok teşekkür ederim.
 
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.
.
 
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:
You must log in to view content
(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...
 
Moderatörün son düzenlenenleri:
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst