ExcelのVBAマクロを使用して、Excelファイルに基づいてフォルダツリーを作成しています。絶対ディレクトリが256文字を超えるフォルダツリーを作成していますか?
現在の問題は、絶対ディレクトリが非常に長くなるたびにエラーが発生するようです。
プログラムは実行時エラー76(パスが見つかりません)をスローします。スクリプトが256文字を超える絶対パスを参照しているため、これが原因であると思います。
回避策はありますか?またはフォルダ名と絶対パス文字列を短縮するための唯一の選択肢ですか?
Dim asheet As Range, r As Range, c As Range
Dim fPath As String, tmp As String
Set asheet = ActiveSheet.UsedRange
For Each r In asheet.Rows
fPath = DEST_FOLDER
For Each c In r.Cells
tmp = Trim(c.Value)
If Len(tmp) = 0 Then
Exit For
Else
tmp = Clean(tmp)
fPath = fPath & tmp & "\"
If Len(Dir(fPath, vbDirectory)) = 0 Then MkDir fPath
End If
Next c
Next r
クリーン()単に文字列、すなわちから特殊文字を削除します自己定義された関数である:
EDIT
私が使用しているコードは、次があります!、#、_、@、$、&、*、^、および%。
絶対パスの代わりに相対パスを使用するこれらのフォルダを作成するために使用できる別の方法がありますか?
私はどちらも使用していません。これらのファイルシステムオブジェクトはありますか?現時点では、私は単にMkDir()関数を使用しています。 – toolshed
@Addiktあなたが以前の質問に対するSiddhartの答えに従って使っていると思っていました。 mkdirについてはわかりませんが、同じ制限があると思います。 – assylias
はい、結果のディレクトリパスが260文字を超えると、MkDir()は失敗します。 – Alain