• 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 kopiëren / Aanmaken met excel

Status
Niet open voor verdere reacties.

Wocky

Gebruiker
Lid geworden
22 feb 2014
Berichten
192
Beste,

Ik zou graag een bestandje ± 100x kopiëren met telkens een verschillende bestandsnaam.
Ik heb in excel deze 100 bestandsnamen staan in kolom "A" (bvb).
En ik zou eventueel het pad waar ik die 100 kopies wil hebben kunnen neerschrijven in cel "B1" (bvb).

Weet iemand toevallig of dit mogelijk is via vba?

Ik heb wel het volgende gevonden, maar dit gaat over mappen aanmaken.
Ik zou graag iets gelijkaardigs doen, maar dan met een bron-bestand (bvb een *txt-file)
(Het bestand in kwestie heeft als extentie *top. Is een bestand van bepaalde tekensoftware).
http://www.helpmij.nl/forum/showthread.php/414573-Snel-een-heleboel-directories-aanmaken-m-b-v-Excel


Alvast bedankt!
Wocky
 
Ervan uitgaande dat de extensie niet in kolom A er al bij staat:
Code:
Sub MaakKopieen()
    Dim oCell as range
    For Each oCell in Range("A1:A100")
        FileCopy "PadPLusNaamVanHetOrigineel", Range("B1").Value & oCell.Value & ".top"
    Next
End Sub
 
Beste,

Bedankt voor je feedback.
Hier kan ik alvast mee aan de slag.
Nog enkele vraagjes.

Ik heb nu onderstaande code.
Sub MaakKopieen()
Dim ocell As Range
For Each ocell In Range("A1:A100")
FileCopy Range("B2").Value, Range("B1").Value & ocell.Value & ".top"
Next
End Sub

Hoe kan ik ervoor zorgen dat excel gewoon alle gevulde cellen uit kolom A neemt?
Want het zullen er de ene keer 100 zijn, de andere keer 85, enz.. willekeurig dus.

Ik merk ook op dat Excel in de bestemmingsmap ook een bestandje creëert zonder bestandsnaam (.top).
Kan dit ook vermeden worden?

Alvast bedankt!
Wocky.
 
Beste,

Nog beter zou zijn om de macro de bestandsnamen te laten zoeken in kolom A, beginnend vanaf cel 3 bvb.
Maar is geen must dus als dit te moeilijk zou worden kan ik hier wel rond werken.
Moest iemand mij hiermee kunnen helpen..

Alvast bedankt.
Wocky.
 
Code:
For Each oCell In Range("A3").CurrentRegion.Columns(1).Cells
Wat bedoel je met zoeken?
 
Beste,

Ik zou graag de code wat uitbreiden.
Ik zou graag:

- De doelmap willen aanmaken ook met excel.
Het is zo dat het pad van de doelmap ook samengesteld zal worden met tekst uit een aantal cellen in excel.
Ik laat het pad dan samenstellen met de functie "tekst.samenvoegen".
Voorlopig zou het resultaat van deze functie in cel "B5" staan.

- Ik doe dit met MkDir (gelezen in link van mijn eerste berichtje).
Wat is die MkDir? Is dat een functie in vba?

- Als ik de code run, wordt de gewenste actie wel uitgevoerd, maar als de doelmap er al staat, dan geeft vba een foutmelding.
Als ik de map wis en de code run, geeft vba geen foutmelding.
Hoe zou ik het kunnen voorzien dat vba geen foutmelding geeft als de doelmap er al staat? Maar gewoon de inhoud van die map volledig wist, en de nieuwe bestanden er dan in kopieert?

- In het berichtje hierboven vroeg ik of het mogelijk was om alle gegevens uit kolom A te gebruiken zonder een specifiek bereik te specifiëren. Te beginnen van bvb rij 3 (Rij 10 mag ook).
Ik heb dan een stukje code gekregen
Code:
For Each oCell In Range("A3").CurrentRegion.Columns(1).Cells
Maar als er dan een blanco rij tussen de gegevens zit, dan leest vba maar tot daar. (heeft iets te maken met ".CurrentRegion" denk ik)
Bestaat er een eenvoudige manier om vba verder te laten kijken in de kolom? Of wordt het dan te complex en te traag?
Want anders neem ik gewoon wat marge in het bereik van "Range("A10:A100")".

- Ook wordt er in de doelmap een bestandje aangemaakt zonder bestandsnaam, maar enkel met de extensie.
Kan het verholpen worden dat dit bestandje niet mee aangemaakt wordt?

Hieronder de code + in bijlage het excelbestandje.
Alvast bedankt aan de helpers.
Wocky.

Code:
Sub MaakKopieen()
 Range("B5").Copy
 Range("B1").Select
 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
 Application.CutCopyMode = False
 Range("A1").Select
 MkDir Range("B1").Value
 Dim ocell As Range
 For Each ocell In Range("A10:A100")
 FileCopy Range("B2").Value, Range("B1").Value & ocell.Value & ".txt"
 Next
 End Sub
Bekijk bijlage Map1.xlsm
 
Laatst bewerkt:
Code:
- Als ik de code run, wordt de gewenste actie wel uitgevoerd, maar als de doelmap er al staat, dan geeft vba een foutmelding.
 Als ik de map wis en de code run, geeft vba geen foutmelding.
 Hoe zou ik het kunnen voorzien dat vba geen foutmelding geeft als de doelmap er al staat? Maar gewoon de inhoud van die map volledig wist, en de nieuwe bestanden er dan in kopieert?

Beste,

Het zou nog beter zijn moest vba een msgbox geven of hij de map mag legen en overschrijven.
Als iemand mij hiermee op weg kan helpen?
Ik ben redelijke leek met vba.

Alvast bedankt.
Wocky.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan