• 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.

Map aanmaken en kopiëren van inhoud via VBA

Status
Niet open voor verdere reacties.

liter

Nieuwe gebruiker
Lid geworden
18 jul 2011
Berichten
4
Na veel Google en proberen kom ik hier uit. Ik krijg het niet voor elkaar.

Ik wil via Excel:
1 een map aanmaken
2 inhoud van een 'standaardmap' kopiëren naar de aangemaakte map

1 is gelukt en draait netjes op de achtergrond:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim MyRange As String
      MyRange = Range("T1")
Dim vFolderList As Variant, i As Long
vFolderList = Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row).Value
On Error Resume Next
For i = 1 To UBound(vFolderList, 1)
    MkDir MyRange & vFolderList(i, 1)
Next
End Sub

Hoe moet de code eruit zien als ik in cel "T2" of C:\ de directory zet van de standaard map? De aangemaakte map moet enkel aan het begin gevuld worden met de inhoud van standaard map, deze zal later handmatig bijgevuld worden.

Mocht er iets niet duidelijk zijn laat het weten! en alvast bedankt voor het meedenken!
 
Bedoel je zoiets?
In cel T1: de aan te maken mapnaam; bv. nieuwemapliter
In cel T2: het pad en map waarin de bestanden zitten; bv: C:\users\liter\documents\test\

De nieuwe map "nieuwemapliter" wordt op de C-schijf aangemaakt.
De bestanden van map test worden gekopieerd naar de nieuwe map "nieuwemapliter"
Code:
Sub hsv()
Dim sq, i As Long
CreateObject("shell.application").Namespace("C:").newfolder Range("t1").Value
sq = Split(CreateObject("wscript.shell").exec("cmd /c Dir ""C:\Users\liter\documents\test\*.xls""/o:n /b").stdout.readall, vbCrLf)
   For i = 0 To UBound(sq) - 1
    CreateObject("scripting.filesystemobject").CopyFile Range("t2") & sq(i), "c:\" & Range("t1") & "\"
   Next i
End Sub
 
Laatst bewerkt:
Bedankt voor je hulp!! Alleen krijg ik je macro helaas niet aan de gang.

Als ik in kolom A een naam invul wil ik dat van deze naam een map wordt aangemaakt in bijv. C:\Overzicht\. Vervolgens van de map C:\Voorbeeld de inhoud wordt gekopieerd naar de aangemaakte map als deze nog leeg is (dus niet continue overschrijven aangezien ik deze wil aanvullen).

En als klap op de vuurpijl dat de macro draait op de achtergrond. :shocked: Is dit mogelijk? Als je hiermee kan helpen graag!
 
Zulke codes zijn niet geschikt om op achtergrond te draaien.
De code is compleet, als jij nu in kolom A de gegevens zet ipv T verander je het even in de code.
Zo moeilijk kan dat niet zijn lijkt me.
 
Beste Harry,

ik heb de code geprobeerd uit te voeren. De code maakt netjes een map aan alleen wordt deze niet gevuld met inhoud van de test map. Inmiddels alles geprobeerd. Nieuwe Excel lijst gepakt en zelfs de mappen exact aangemaakt zoals in je uitleg om daar geen fouten in te maken (C:\users\liter uiteraard wel aangepast ;)).

Heb je een idee wat ik over het hoofd zie? Moet ik nog iets aanpassen in de instellingen o.i.d.? ik werk met Excel 2016 in een omgeving met administrator rechten mocht dat uitmaken.
 
De backslash aan het eind vergeten misschien?
 
Code is aangepast.
1: in deze rij zet je de naam die de map moet krijgen
3: Directory waar de map moet komen
4: locatie van de map waarvan de inhoud gekopieerd wordt naar de aangemaakte map

Alleen bestanden worden gekopieerd, helaas geen mappen die hier in staan :(

Sub hsv()

Dim row As Integer
Const OverwriteExisting = False

For row = 2 To 500
If Cells(row, 1).Value = "" Then
Exit For
End If
CreateObject("shell.application").Namespace(Cells(row, 3).Value).newfolder Cells(row, 1).Value
On Error Resume Next
CreateObject("scripting.filesystemobject").CopyFile Cells(row, 4).Value, Cells(row, 3).Value & "" & Cells(row, 1).Value, OverwriteExisting
Next row
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan