2016-08-17 2 views
1

Ich möchte Excel verwenden, um Kopien von Ordnern zu erstellen, nachdem sie überprüft wurden, ob sie existieren. Aber wenn es existiert, anstatt den Ordner zu löschen und einen neuen zu erstellen (ich habe bereits herausgefunden, wie man dies mit den Funktionen kill/Rmdir/Mkdir macht), möchte ich einen neuen erstellen, der denselben Ordnernamen verwendet, aber mit etwas wie (1), (2) am Ende des Ordnernamens, um zwischen ihnen zu unterscheiden. Außerdem möchte ich, dass es eine Schleife ist, um eine spätere Version zu erhalten, wenn vorherige Versionen bereits existieren.Wie kopiert man verschiedene Versionen des gleichen Ordners in Excel VBA?

Beispiel: ursprüngliche Ordnernamen abc erste Kopie (im selben Verzeichnis abc (1)) zweite Kopie (im selben Verzeichnis abc (2)) => ich eine Schleife tun will jede Version überprüfen und erstellen Sie dann einen neuen Ordner, falls dieser noch nicht vorhanden ist.

On Error Resume Next 
    Kill strDir & "*.*" 
    RmDir strDir 
    On Error GoTo 0 
    If Dir(strDir, vbDirectory) = "" Then 
    strDir = Destination & "\" " 
    MkDir strDir 
    End If 

Dies ist, was ich derzeit haben, und ich bin mit

If Dir(strDir, vbDirectory) = "" Then 

, wenn der Ordner bereits überprüfen vorhanden ist.

Haben Sie Hilfe bei der Durchführung einer Schleifenprüfung und erstellen Sie einen Ordner mit inkrementellen Versionsnamen? Danke im Voraus!

Antwort

0
Dim strDirVersion as Integer 
If Dir(strDir, vbDirectory) <> "" Then 
    strDirVersion = 1 
    Do While Dir(strDir & "(" & strDirVersion & ")", vbDirectory) <> "" 
     strDirVersion = strDirVersion + 1 
    Loop 
    strDir = strDir & "(" & strDirVersion & ")" 
End If 

Dies wird verlassen strDir entweder mit dem Anfangswert oder mit einem Suffix von (n) wo n die ersten ganzen Zahl (beginnend mit 1), das für die ein Verzeichnis nicht bereits vorhanden ist gefunden werden kann.

Hinweis: Wenn strDir einen Wert von abc und Verzeichnisse hatte abc, abc(1) und abc(3) bereits existierte, würde dies abc(2) zurückkehren, nicht abc(4) - das heißt, es sieht, dass 2 verfügbar ist, bevor es bemerkt, dass 3 verwendet wurde.

+0

Das ist erstaunlich und funktioniert perfekt! Vielen Dank!!! Ich muss mein Looping mehr üben :) – ragehulk

Verwandte Themen