DOSYA TAŞIYAN MAKRO

Katılım
25 Temmuz 2006
Mesajlar
19
Merhaba;

Excel sayfasına alt alta dosya isimleri girdiğimi düşünün.Çalıştırıldığında sırayla bu isimli dosyaları belirtilen bir klasör içinde bulacak, kopyalayacak ve yine belirttiğim bir klasöre taşıyacak makroya ihtiyacım var.Hücreleri değişken olarak tanımlayıp Dosya konumu içine değişken olarak gömmeye çalışıyorum,bir türlü yapamadım.Yardım!!! :(
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Bir örnek dosya ekleyiniz. Kopyalanacak ve taşınacak klasör bilgileri nereden alınacaktır. Birde taşıma kopyalamamı yoksa tamamenmi olacak.
 
Katılım
25 Temmuz 2006
Mesajlar
19
dosya kopyalama

İlginiz için çok teşekkür ederim. Ekteki C:\lost.xls\ dosyasında isimleri listelenen .jpeg dosyalarını, C: içindeki "lost" isimli klasör içindeki dosyalar arasından bulup, yine C: sürücüsü altında oluşturulmuş "lostx" adlı klasör içine kopyalayacak.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,642
Excel Vers. ve Dili
Pro Plus 2021
[vb:1:4e13fab866]Sub KOPYALA()
On Error Resume Next
For x = 2 To [A65536].End(3).Row
Source = "c:\lost\" & Cells(x, 1) & ".jpeg"
target = "c:\lostx\" & Cells(x, 1) & ".jpeg"
FileCopy Source, target
Next x
End Sub[/vb:1:4e13fab866]
 
Katılım
25 Temmuz 2006
Mesajlar
19
olmuyor

Teşekkürler,fakat bu kod hata vermeden çalışıyor,ama sonuçta lostx içine baktığımda dosyalar kopyalanmamış.
 
Katılım
25 Mayıs 2005
Mesajlar
44
Excel Vers. ve Dili
Excel 2007 - Türkçe
Sanırım hata dosya uzantısından kaynaklanıyor. Kod satırlarındaki "jpeg" uzantılarını "jpg" olarak değiştirir misiniz?

Yani;
Source = "c:\lost\" & Cells(x, 1) & ".jpg"
target = "c:\lostx\" & Cells(x, 1) & ".jpg"
şeklinde yazarsanız problem kalmayacaktır.
 
Katılım
8 Şubat 2005
Mesajlar
13
sayın cout(h)ane;

Çektiğim resimleri yıl ve aylara göre ayrı klasörler içinde (2006/ocak 2006/ şubat vb. şekilde) bilgisayara aktarıyorum ve bu resimlerin adlarını excelde bir sayfa üzerinde tutuyorum ve orda süzme veya arama işlemi yaptırdıktan sonra
bu dosyaları ilgili klasörlerinden alıp tek tek başka bir klasöre aktarıyordum. sizin çözüm önerinizi uyguladım gerçekten çok hoş bir çalışma, sizden ricam; örneğinizde olduğu gibi lost klasörünün altındaki diğer klasörleri (klasör adı değişken olabilir - alt alta birkaç klasör olabilir "\lost\2006\nisan\tatil vb) nasıl arattırabilirim.
birkaç deneme yaptım ama başarısız oldum, yardımcı olabilirseniz çok sevinirim.
saygılarımla
 
Katılım
25 Mayıs 2005
Mesajlar
44
Excel Vers. ve Dili
Excel 2007 - Türkçe
Sorunuz benim de çok işimi görürdü, tecrübeli arkadaşların yardımını bekliyoruz beraberce :)

Biraz daha açık bir ifade ile:

Source = "c:\lost\" & Cells(x, 1) & ".jpg"

Yukarıdaki kod satırını sadece "c\lost\" klasörü altındaki jpg dosyalarını aratacak şekilde değil de; hem "c\lost\" klasörü, hem de bu klasörün tüm alt klasörlerini (örnek: "c\lost\ocak\", "c\lost\şubat\", "c\lost\şubat\1", "c\lost\şubat\2" gibi) aratacak şekilde nasıl değiştirebiliriz?
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Bir klasör ve içindeki tüm alt klasörlerde "*xls" uzantılı dosyaları listeleyen aşağıdaki kodu, amacınıza uygun olarak düzenleyebilirsiniz...

Kod:
Sub Test()
    FileNamesList = CreateFileList("C:\Program Files", "*.xls", True)
    For i = LBound(FileNamesList) To UBound(FileNamesList)
        MyList = MyList & vbCrLf & FileNamesList(i)
    Next
    MsgBox MyList
End Sub
'
Function CreateFileList(MenuPath As String, FileFilter As String, IncludeSubFolder As Boolean) As Variant
    Dim FileList() As String, FileCount As Long
    CreateFileList = ""
    Erase FileList
    With Application.FileSearch
        .NewSearch
        .LookIn = MenuPath
        .Filename = FileFilter
        .LastModified = msoLastModifiedAnyTime
        .SearchSubFolders = IncludeSubFolder
        If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) = 0 Then Exit Function
        ReDim FileList(.FoundFiles.Count)
            For FileCount = 1 To .FoundFiles.Count
                FileList(FileCount) = .FoundFiles(FileCount)
            Next
    End With
    CreateFileList = FileList
    Erase FileList
End Function
 
Katılım
8 Şubat 2005
Mesajlar
13
cevap gönderdiğinizden bu saate kadar uğraşıyorum ve halen yapamadım,
couthane arkadaşım bu kodu uyarlayabildiyse yardım alabilir miyim acaba?
işin içinden çıkacak gibi değilim....
 
Katılım
8 Şubat 2005
Mesajlar
13
Sub KOPYALA()
On Error Resume Next
For x = 2 To [A65536].End(3).Row
Source = "c:\lost\" & Cells(x, 1) & ".jpg"
target = "c:\lostx\" & Cells(x, 1) & ".jpg"
FileCopy Source, target
Next x
End Sub

arkadaşlar bu kod c\lost\dizini altındaki jpg uzantılı dosyaları alıyor
benim yapmaya çalıştığım ve bir türlü başaramadığım ise (haluk beyin kodlarına rağmen), lost dizini altında bulunan diğer alt dizinlerinde taranması
bu konuda yardımlarınızı bekliyorum (kafayı takmış durumdayım)...
 
Katılım
8 Şubat 2005
Mesajlar
13
merhaba;
link vermiş olduğunuz sayfayı dün gece saat 03:30 a kadar inceledim, kendime uyarlamaya çalıştım fakat başarılı olamadım. vermiş olduğunuz linkteki örnekte;
tanımlanan bir dizin (alt dizinler dahil) altındaki dosyaları excel sayfasına aktarmaktadır.
Benim takıldığım konu ise, excel sayfasında A sütununda belirttiğim dosya adlarını tanımladığım dizin (alt dizinler dahil) altında araması ve bulduğunda başka bir (belirttiğim) dizin altına kopyalaması.

Sub KOPYALA()
On Error Resume Next
For x = 2 To [A65536].End(3).Row
Source = "c:\lost\" & Cells(x, 1) & ".jpeg"
target = "c:\lostx\" & Cells(x, 1) & ".jpeg"
FileCopy Source, target
Next x
End Sub

Source = "c:\lost\" & Cells(x, 1) & ".jpeg" (bu satırda sadece "lost" dizini değil, onun altında varolan diğer dizinleri de (isim belirtmeden) almaya çalışıyorum..

:yardim: :yardim: :yardim:
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Bu şekilde deneyin ...

Kod:
Sub Test()
    FileNamesList = CreateFileList("C:\lost", "*.jpg", True)
    For x = 2 To [A65536].End(3).Row
        For i = LBound(FileNamesList) To UBound(FileNamesList)
             If (Cells(x, 1) & ".jpg") = Dir(FileNamesList(i)) Then
                FileCopy FileNamesList(i), "C:\lostx\" & Dir(FileNamesList(i))
             End If
        Next
    Next
End Sub
'
Function CreateFileList(MenuPath As String, FileFilter As String, IncludeSubFolder As Boolean) As Variant
    Dim FileList() As String, FileCount As Long
    CreateFileList = ""
    Erase FileList
    With Application.FileSearch
        .NewSearch
        .LookIn = MenuPath
        .Filename = FileFilter
        .LastModified = msoLastModifiedAnyTime
        .SearchSubFolders = IncludeSubFolder
        If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) = 0 Then Exit Function
        ReDim FileList(.FoundFiles.Count)
            For FileCount = 1 To .FoundFiles.Count
                FileList(FileCount) = .FoundFiles(FileCount)
            Next
    End With
    CreateFileList = FileList
    Erase FileList
End Function
Bilgisayarınızda C:\lost\...\...\ ve C:\lostx klasörlerinin olduğundan emin olun.

Ayrıca, sayfada A sütunundaki hücrelerde sadece resim dosyalarının adı olsun, ".jpg" uzantıları yazılı olmayacak.
 
Katılım
8 Şubat 2005
Mesajlar
13
Haluk beye ve diğer arkadaşlara, ilgilerinden ve emeklerinden ötürü teşekkür ederim.
son olarak Haluk beyin göndermiş olduğu kodları denedim, ilk başta yine olmadı fakat üzerinde biraz uğraştım. bu kodlarla jpg - bmp türü resim dosyalarını nedendir taşıyamadım. Dosya uzantılarını doc-xls-txt vb şekilde değiştirdiğimde makro gayet güzel çalıştı.
iki gündür bunun üstünde çalışıyordum ve çıldırmak üzereydim, neyseki haluk beyin sayesinde biraz olsun kurtuldum. jpg uzantılı dosyaları taşıma işini ise başka bir zamana bıraktım artık.
tüm arkadaşlara iyi çalışmalar dilerim
saygılarımla
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Sayın ozgur2,

Gönderdiğim kodu denemiştim, merak etmeyin ... "*.jpg" uzantılı dosyalar gayet güzel taşınıyor.

Muhtemelen siz, dosyanıza adapte ederken bir hata yapıyorsunuz.

Çalıştığınız dosyayı zip olarak yollarsanız, bakalım...
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Bu arada aklıma geldi de .... dosya isimlerinde küçük-büyük harf sorunu olabilir.

Bu nedenle, eski Test prosedürü yerine aşağıdakini kullanın. (Dosya isimlerinde Türkçe karakterler varsa, yine sorun olabilir....)

Kod:
Sub Test()
    FileNamesList = CreateFileList("C:\lost", "*.jpg", True)
    For x = 2 To [A65536].End(3).Row
        For i = LBound(FileNamesList) To UBound(FileNamesList)
             If LCase((Cells(x, 1) & ".jpg")) = LCase(Dir(FileNamesList(i))) Then
                FileCopy FileNamesList(i), "C:\lostx\" & Dir(FileNamesList(i))
             End If
        Next
    Next
End Sub
 
Katılım
8 Şubat 2005
Mesajlar
13
haluk bey;

son gönderdiğiniz kod harika olmuş, ellerinize sağlık. tam pes etmişken sayenizde oldu ve şuan kafam epey rahatladı, bu gece artık rahat bir uyku uyuyabilirim.
çok teşekkürler, isteyen arkadaşlar olursa bu kodları xls dosyası olarak gönderebilrim
herkese iyi çalışmalar dileğiyle....
:mutlu: :mutlu: :mutlu:
 
Üst