• DİKKAT

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

Çalışma kitaplarını başka bir dosyaya taşıma

Katılım
12 Şubat 2009
Mesajlar
185
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba Arkadaşlar

Farklı dosyalarda Excel çalışma kitapları var bu dosyalarını yolları bulup kopyalıyacağımı yanın evet yazılanları başka bir yere taşımak istiyorum.
Dosya yerleri bulma kodunu yaptım ancak nasıl taşıma yapma komudunu bulamadım.
Yardımcı olmanızı rica ederim.
 
Özünde çalışma kitabı ve farklı dosya aynı şeyler. Siz tam olarak neyi nereye taşımak istiyorsunuz?
 
Merhaba Hocam

Dosya yollarını buraya ekleyip c kolununda yes yazılanları başka bir dosyaya kopyalamak istiyorum.
dosyaların taşımak için "yes" veya "No" kısmını ben elle manual olarak yazacam.


248407
 

Ekli dosyalar

  • Dosya.png
    Dosya.png
    11.9 KB · Görüntüleme: 1
A2 hücresinde yazan adreste tam olarak ne var?
 
B2 de bulunan excel çalışma kitabının nerede olduğunu göstermektedir.
 
"Başka bir dosya" olarak ifade ettiğiniz dosyanız nerede bulunuyor? Bu bir excel dosyası mı?
 
Örneğin 10 tane farklı klasör var. içleinden farklı excel "isimleride farklı" çalışma kitabı bulunmaktadır. "c" kolanuna "yes" yazdıklarımı başka bir Dosya içine kopyalamasını istiyorum.
koypalanacak dosya adı sabit bir dosya adı olacak Dosya Adı "Deneme_Dosyası" yes yazdıklarım çalışma kitapları A ve b Birleştirekek yazılan yollara göre "Denem_Dosyası" içine kopyalama yapacak
 
Örneğin 10 tane farklı klasör var. içleinden farklı excel "isimleride farklı" çalışma kitabı bulunmaktadır. "c" kolanuna "yes" yazdıklarımı başka bir Dosya içine kopyalamasını istiyorum.
koypalanacak dosya adı sabit bir dosya adı olacak Dosya Adı "Deneme_Dosyası" yes yazdıklarım çalışma kitapları A ve b Birleştirekek yazılan yollara göre "Denem_Dosyası" içine kopyalama yapacak
Kod:
Sub Kopyala()
    Dim dosyaAdi As String
    dosyaAdi = "Deneme_Dosyası.xlsx" ' Hedef dosyanın adı
    
    Dim dosyaYolu As String
    dosyaYolu = ThisWorkbook.Path & "\" & dosyaAdi ' Hedef dosyanın tam yolu
    
    Dim hedefKitap As Workbook
    On Error Resume Next
    Set hedefKitap = Workbooks(dosyaAdi)
    On Error GoTo 0
    
    ' Hedef dosya yoksa oluştur
    If hedefKitap Is Nothing Then
        Set hedefKitap = Workbooks.Add
        hedefKitap.SaveAs dosyaYolu
    End If
    
    Dim satir As Long
    Dim hedefSatir As Long
    Dim ws As Worksheet
    
    ' Her bir çalışma kitabını kontrol et
    For Each ws In ThisWorkbook.Sheets
        ' C sütununda "Yes" olan satırları kontrol et
        For satir = 1 To ws.Cells(Rows.Count, "C").End(xlUp).Row
            If UCase(ws.Cells(satir, "C").Value) = "YES" Then
                ' Hedef dosyada bir sonraki boş satıra kopyala
                hedefSatir = hedefKitap.Sheets(1).Cells(Rows.Count, "A").End(xlUp).Row + 1
                ' Veriyi kopyala
                ws.Rows(satir).Copy Destination:=hedefKitap.Sheets(1).Rows(hedefSatir)
            End If
        Next satir
    Next ws
    
    hedefKitap.Close SaveChanges:=True ' Hedef dosyayı kaydet ve kapat
End Sub
 
Merhaba Musa Hocam

elinize sağlık istediğim bu değil :(

ekteki dosya yazdım bir baka bilirmisiniz.
 

Ekli dosyalar

Merhaba Hocam

Dosya yollarını buraya ekleyip c kolununda yes yazılanları başka bir dosyaya kopyalamak istiyorum.
dosyaların taşımak için "yes" veya "No" kısmını ben elle manual olarak yazacam.

Hiç pratik değilsiniz. :)
Ben olsam herhangi bir değer yazarım, aktarılmayacaklara ise hiç dokunmam. Zaman Önemli ve Değerli :) dolayısıyla C sütununda boş olmayan tüm dosyalara ne yapılacaksa yapılır.
Ayrıca Yes'i yes te yazarsanız kodda bunu kontrol etmeniz gerekir. Yanlışlıkla Yed yazdınız o aynen kalır :)
 
Merhaba Hocam tamam nasıl daha hızlı olacaksa böyle olsun :D
bu iş benim 4 saattımı alıyor :(
onu hiç bile düşünmedim acıkcası :D
 
Merhaba,
Dosyalar aktarılacak mı , yani mevcut dizinden diğer dizine ,yoksa kopyası mı çıkartılacak.
eğer dosyataşınacaksa, taşıdığı dizinde aynı dosya olup olmadığını kontrol etmedim, o da edilebilinir.
Aşağıdaki kodları deneyiniz.
Aktarılacak dizini Sayfa2 E1 sütununa yazınız.

Kod:
Sub DosyaKesAktar()

' Tools / References / Microsoft Scripting Runtime
' Seçili Olmalı

Dim fso As New FileSystemObject
Dim yol As String
Dim i   As Long
Dim arr As Variant
Dim adt As Integer
Dim ds1 As String
Dim ds2 As String

yol = Sayfa2.Range("E1") & Application.PathSeparator
arr = Sayfa2.Range("A1").CurrentRegion.Value

For i = 2 To UBound(arr, 1)
    If Not arr(i, 3) = "" And Not arr(i, 3) = "Aktarıldı" Then
        ds1 = arr(i, 1) & Application.PathSeparator & arr(i, 2)
        ds2 = yol & arr(i, 2)
        fso.CopyFile ds1, ds2
'        fso.MoveFile ds1, ds2
        arr(i, 3) = "Aktarıldı"
        adt = adt + 1
    End If
Next i

Sayfa2.Range("A1").Resize(UBound(arr, 1), UBound(arr, 2)) = arr

MsgBox adt & " DOSYA AKTARILDI...."

End Sub
 
Son düzenleme:
Merhaba,
Dosyalar aktarılacak mı , yani mevcut dizinden diğer dizine ,yoksa kopyası mı çıkartılacak.
eğer dosyataşınacaksa, taşıdığı dizinde aynı dosya olup olmadığını kontrol etmedim, o da edilebilinir.
Aşağıdaki kodları deneyiniz.
Aktarılacak dizini Sayfa2 E1 sütununa yazınız.
Kod:
Sub DosyaKesAktar()

' Tools / References / Microsoft Scripting Runtime
' Seçili Olmalı

Dim fso As New FileSystemObject
Dim yol As String
Dim i   As Long
Dim arr As Variant
Dim adt As Integer

yol = Sayfa2.Range("E1") & Application.PathSeparator
arr = Sayfa2.Range("A1").CurrentRegion.Value

For i = 2 To UBound(arr, 1)
    If Not arr(i, 3) = "" And Not arr(i, 3) = "Aktarıldı" Then
        arr(i, 1) = Replace(arr(i, 1) & "\", "\\", "\") & arr(i, 2)
        fso.MoveFile arr(i, 1), yol & arr(i, 2)
        arr(i, 3) = "Aktarıldı"
        adt = adt + 1
    End If
    Debug.Print i
Next i

Sayfa2.Range("A1").Resize(UBound(arr, 1), UBound(arr, 2)) = arr
MsgBox adt & " DOSYA AKTARILDI...."
End Sub



Merhaba Hocam

Kopyalama yapacak
 
Merhaba Hocam

hata verdi :(
 

Ekli dosyalar

  • Hata.png
    Hata.png
    127.4 KB · Görüntüleme: 4
Referansı eklediniz mi? kodarın başında açıklama olarak koymuşum.

Kopyalama için

fso.MoveFile yerine fso.CopyFile kullanın.
 
Merhaba

Yeni yaptım dikkat etmemiştim :(
dosya aktarımı yapamdı :(

248479
 
Merhaba,
Ben kodları deneyin gönderdim.
Aktarım yapmıyorsa dosya yolu ya da dosya adını kontrol ediniz
Bunlar doğru ise yine bakarız.
 
Geri
Üst