• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Bestanden verplaatsen middels script in Excel

Status
Niet open voor verdere reacties.

Hulzebos

Gebruiker
Lid geworden
19 sep 2010
Berichten
8
Ik heb een groot aantal bestanden in een directory staan die ik middels een script graag wil verplaatsen naar een andere map.

De gegevens heb ik in Excel staan.

Weet iemand een script die dit verplaatsen eenvoudig kan regelen.
Het gaat om ruim 9000 bestanden, vandaar.....

Bijv. in excel heb ik staan .

Veld A
Regel1 Foto1.jpg
Regel2 Foto2.jpg
Regel3 Foto3.jpg
Regel4 Foto4.jpg
Regel5 Foto5.jpg

In Veld B staat de directory waar het bestand naar toe verplaatst moet worden (mag ook kopieeren)

Dus Veld B
Regel1 D:\FOTO\Zomervakantie 2010
Regel2 D:\FOTO\Zomervakantie 2012
Regel3 D:\FOTO\Zomervakantie 2011
Regel4 D:\FOTO\Zomervakantie 2010
Regel5 D:\FOTO\Zomervakantie 2010

voor de volledigheid:

kolom A kolom B
Regel1
Foto1.jpg
D:\FOTO\Zomervakantie 2010
Regel2
Foto2.jpg
D:\FOTO\Zomervakantie 2012
Regel3
Foto3.jpg
D:\FOTO\Zomervakantie 2011
Regel4
Foto4.jpg
D:\FOTO\Zomervakantie 2010
Regel5
Foto5.jpg
D:\FOTO\Zomervakantie 2010


Ik hoor het graag !!
 
Maak een extra kolom aan in het begin (kolom A) en geef elk veld de tekst 'move'.
Hernoem voor het gemak alle doelmappen zo dat er geen spaties in voorkomen (bv d:\foto\zomervakantie2011)

Je krijgt op de eerste regel dan:

MOVE foto1.jpg d:\foto\zomervakantie2011

Sla het bestand op als een tekst (TXT) bestand, bijvoorbeeld verplaats.txt in de map met alle foto's.

Hernoem het tekstbestand naar een CMD bestand, dus verplaats.cmd

Dubbelklik op verplaats.cmd en de bestanden worden verplaatst.
 
Helaas zal dat niet gaan omdat het een dos commando is en DOS kent geen lange bestandsnamen.

Ik heb namelijk een bestandsnaam Foto van de Meerval.jpg en die moet bijvoorbeeld verplaatst worden naar de map D:\FOTO\Zomervakantie 2011

Wellicht is het mogelijk om dit middels een script in Excel wel te doen.
Gelijk aan het maken van mappen in Excel.
 
DOS is wel heel oud. Binnen W2000 XP, Vista windows 7 kan de commandshell uitstekend met lange bestandsnamen omgaan.
 
Code:
Sub test()
For Each cl In Range(Range("A1"), Range("A" & Rows.Count).End(xlUp))
    FileCopy "[COLOR="#FF0000"]G:\Mijn documenten\Test\[/COLOR]" & cl, cl.Offset(, 1) & "\" & cl
Next
End Sub
Vervang het rode gedeelte in de juiste startdirectory.
 
Blijkbaar gaat er iets fout....:eek:

Ik krijg direct bij het starten van het script een fout.

Wat doe ik verkeerd ?
In kolom A staat de filename en in kolom B het pad waar het bestand naar gekopieerd moet worden.

Dus
A1 = Hoe staat het met de vakantie.jpg
B1 = d:\mijn documenten\vakantie 2012\algemeen

In het script heb ik aangegeven dat de bestanden (jpg) zoals 'Hoe staat het met de vakantie.jpg' allemaal in de map D:\foto's\ongesorteerd staan.
 
Code:
Sub test()
For Each cl In Range(Range("A1"), Range("A" & Rows.Count).End(xlUp))
    str1 = "D:\foto's\ongesorteerd\" & cl
    str2 = cl.Offset(, 1) & "\" & cl
    FileCopy str1, str2
Next
End Sub
Als je nu de code doorloopt met de F8-toets kan je in het venster Lokale variabelen mooi kijken welke waarde str1 en str2 hebben.
Controleer nu of de beide bestandsnamen en paden kloppen.
 
Script werkt perfect !

Dank je.
Echter nu een eenvodig verzoek, het script stomt nu ergens halverwege omdat er wellicht een map of een bestandsnaam niet aanwezig is.
Echter kan ik niet zien waar het fout is gegaan.
Is het mogelijk om ook een teller in te bouwen zodat ik bijv. weet bij welke regel er iets fout is gegaan ?

Hoor het wel.

Hoi,
Hans
 
Code:
Sub test()
x=0
For Each cl In Range(Range("A1"), Range("A" & Rows.Count).End(xlUp))
    str1 = "D:\foto's\ongesorteerd\" & cl
    str2 = cl.Offset(, 1) & "\" & cl
    FileCopy str1, str2
    x=x + 1
Next
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan