2016-08-17 12 views
1

私がしたいことは、フォルダが存在する場合、チェックした後にExcelのフォルダのコピーを作成することです。しかし、それが存在する場合は、フォルダを削除して新しいものを作成する代わりに(私はすでにkill/Rmdir/Mkdir関数を使ってこれを行う方法を理解しています)、同じフォルダ名を使用して新しいフォルダを作成したいと思います。フォルダ名の末尾に(1)、(2)のようなものを入れて区別します。また、以前のバージョンがすでに存在する場合は、それ以降のバージョンを取得するために、ループにしたいと思います。excel vbaで同じフォルダの異なるバージョンをコピーするにはどうすればよいですか?

例: 元のフォルダ名ABC Iは、それぞれのバージョンを確認するためにループをしたい =>((2)同じディレクトリABCで) 第二のコピー(同じディレクトリABC(1)中) 最初のコピー新しいフォルダがまだ存在しない場合は作成します。

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

これは私が現在持っているものである、と私は、フォルダが既に存在するかどうかを確認するために

If Dir(strDir, vbDirectory) = "" Then 

を使用しています。

ループチェックを行い、増分バージョン名のフォルダを作成する方法についてのヘルプはありますか?前もって感謝します!

答えて

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 

これは初期値のいずれかと、又はnディレクトリがすでに存在しないために見つけることができる最初の整数(1で始まる)である(n)の接尾辞strDirを残します。

注:strDirはabcとディレクトリabcabc(1)abc(3)の値がすでに存在していた場合、これはabc(2)を返します、ないabc(4) - すなわち、それはそれは3が使用されていることに気づく前に2が利用可能であることを見ています。

+0

これはすばらしく、完璧に機能します。ありがとう!!!私は本当に私のループを練習する必要があります:) – ragehulk

関連する問題