• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Kapalı Dosyaya Veri Aktarma (Kurallı)

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)
 
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
 
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
 
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ı..
 
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:
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.
 
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 !
 
@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.
 
Geri
Üst