Kapalı Dosyaya Veri Aktarma (Kurallı)

NullHero

Altın Üye
Katılım
11 Aralık 2020
Mesajlar
19
Excel Vers. ve Dili
2016 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2025
Korhan bey,
Sorunsuz. Teşekkür ederim tekrar.
 

NullHero

Altın Üye
Katılım
11 Aralık 2020
Mesajlar
19
Excel Vers. ve Dili
2016 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2025
Korhan bey selamlar,

Aktarma işlemini yaptığımız hücrelere, bir başka hücreden değer atadığım için, "Kapalı" adlı dosyada =#BAŞV şeklinde gözüküyor.
Bu hücrelere, Formül ile bir başka hücreden veri alsam bile, "Değer" olarak aktarma yapabilmem için, hedef hücrelerde nasıl bir değişiklik yapmam gerekir ?
Örn, T10 hücre içeriği "=EĞER(C60="";"";C60)" şeklinde. Aktarma yaptığımda, hücre değeri yerine formül aktarılıyor.

If Kaynak_Sayfa.Range("T10") = Hedef_Sayfa.Range("A" & Hedef_Son_Satir - 1) And _
Kaynak_Sayfa.Range("M25") = Hedef_Sayfa.Range("B" & Hedef_Son_Satir - 1) And _
Kaynak_Sayfa.Range("T22") = Hedef_Sayfa.Range("C" & Hedef_Son_Satir - 1) And _
Kaynak_Sayfa.Range("M28") = Hedef_Sayfa.Range("D" & Hedef_Son_Satir - 1) Then
MsgBox "Mükerrer kayıt yapılamaz!", vbCritical
Hedef_Kitap.Close False
Exit Sub
End If
Kaynak_Sayfa.Range("T10").Copy Hedef_Sayfa.Range("A" & Hedef_Son_Satir)
Kaynak_Sayfa.Range("M25").Copy Hedef_Sayfa.Range("B" & Hedef_Son_Satir)
Kaynak_Sayfa.Range("T22").Copy Hedef_Sayfa.Range("C" & Hedef_Son_Satir)
Kaynak_Sayfa.Range("M28").Copy Hedef_Sayfa.Range("D" & Hedef_Son_Satir)
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,316
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sadece değer olarak aktarmak için aşağıdaki satırı bir sonraki gibi değiştirmelisiniz. Diğer satırları siz düzenlersiniz.

Eski hali;
Kaynak_Sayfa.Range("T10").Copy Hedef_Sayfa.Range("A" & Hedef_Son_Satir)

Yeni hali;
Hedef_Sayfa.Range("A" & Hedef_Son_Satir).Value = Kaynak_Sayfa.Range("T10").Value
 

NullHero

Altın Üye
Katılım
11 Aralık 2020
Mesajlar
19
Excel Vers. ve Dili
2016 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2025
Harfiyen uyguladım,
223655
Sonuç görseldeki gibi.
Kodlar;
If
Hedef_Sayfa.Range("A" & Hedef_Son_Satir).Value = Kaynak_Sayfa.Range("T10").Value And _
Hedef_Sayfa.Range("B" & Hedef_Son_Satir).Value = Kaynak_Sayfa.Range("M25").Value And _
Hedef_Sayfa.Range("C" & Hedef_Son_Satir).Value = Kaynak_Sayfa.Range("T22").Value And _
Hedef_Sayfa.Range("D" & Hedef_Son_Satir).Value = Kaynak_Sayfa.Range("M28").Value Then
MsgBox "Mükerrer kayıt yapılamaz!", vbCritical
Hedef_Kitap.Close False
Exit Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,316
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
O bölüme değil..

End If satırının altındaki bölüme uygulayın. Çünkü veri aktaran kısım orası..
 

NullHero

Altın Üye
Katılım
11 Aralık 2020
Mesajlar
19
Excel Vers. ve Dili
2016 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2025
Korhan bey,

Aşağıdaki kod ile; C sütunundaki ilk boş hücreye yapıştırma yapabiliyorum fakat, herhangi bir değer vs kopyalanmadığı zaman, '1004' hatası alıyorum.
Bu hata ile karşılaşmamak için, "Yapıştırılacak değer bulunamadı" mesajı almam için, nasıl bir koşula sokmam lazım ?

Bir de, Bu kodlar ile "C8" de bulunan Sütun Başlığının altından ilk boş hücre ("C9") buluyor. Lakin, Başlık olan hücre kaza ile silinmiş olsa, veya başına bir iş gelmiş olsa, sırada kayma olacak. Bu formülasyonu C9 dan itibaren başlatabilir miyim ?

223683
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,316
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Proje işlerine forumu detaylıca incelemeden girişince bu sıkıntıları yaşamanız gayet doğaldır.

IF (EĞER) sorgusu ile kod bloklarını yönetebilirsiniz.

Yine aynı şekilde hata kontrolleri de yazılımın temel öğelerindendir.

Bunları öğrenmeden girişilen her proje maalesef ilerliyemiyor.
 

NullHero

Altın Üye
Katılım
11 Aralık 2020
Mesajlar
19
Excel Vers. ve Dili
2016 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2025
Haklısınız. Teşekkür ederim.
 

baydeniro

Altın Üye
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Ham aktarım kodu olarak aşağıdaki yapıyı kullanabilirsiniz.

Belki aralara kontroller için koşul satırları eklenmesi gerekebilir.

C++:
Option Explicit

Sub Verileri_Aktar()
    Dim Kaynak_Kitap As Workbook, Kaynak_Sayfa As Worksheet
    Dim Hedef_Kitap As Workbook, Hedef_Sayfa As Worksheet
    Dim Yol As String, Dosya_Adi As String
    Dim Kaynak_Son_Satir As Long, Hedef_Son_Satir As Long
   
    Application.ScreenUpdating = False
  
    Set Kaynak_Kitap = ThisWorkbook
    Set Kaynak_Sayfa = Kaynak_Kitap.Sheets("Giriş")
   
    Kaynak_Son_Satir = Kaynak_Sayfa.Cells(Kaynak_Sayfa.Rows.Count, 1).End(3).Row + 1
   
    Yol = "\\server\siparisler\kayıtlar\"
    Dosya_Adi = "datalar.xlsm"
  
    Set Hedef_Kitap = Workbooks.Open(Yol & Dosya_Adi, False, False)
    Set Hedef_Sayfa = Hedef_Kitap.Sheets("Yedek")
   
    Hedef_Son_Satir = Hedef_Sayfa.Cells(Hedef_Sayfa.Rows.Count, 1).End(3).Row + 1
   
    Kaynak_Sayfa.Range("A1:F" & Kaynak_Son_Satir).Copy Hedef_Sayfa.Range("A" & Hedef_Son_Satir)

    Hedef_Kitap.Close True
   
    Application.ScreenUpdating = True
   
    MsgBox "Veri aktarımı tamamlanmıştır.", vbInformation
End Sub
Korhan Ayhan üstad destekleriniz için çok teşekkürler. Kopyalanacak verilerin sadece VALUE olarak, yani kaynaktaki biçimleri olmadan kopyalamak için koda nasıl düzenleme yapmalıyız !
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,316
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
@baydeniro,

Forumda zaten benzer kodlar defalarca paylaşıldı ki bu başlıkta bile paylaşıldı. Artı siz eski bir üyemizsiniz. Artık bu tarz kodları yazabiliyor olmanız gerekir diye düşünüyorum.
 
Üst