2012-05-08 7 views
2

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

私が使用しているコードは、次があります!、#、_、@、$、&、*、^、および%。

絶対パスの代わりに相対パスを使用するこれらのフォルダを作成するために使用できる別の方法がありますか?

答えて

0

Windows APIには、状況によってはlimit of 260 characters(C:\ + 256文字+)があります。以前の質問を参照している場合、SHFileOperationAの代わりにSHFileOperationWを使用してみましたか?

+0

私はどちらも使用していません。これらのファイルシステムオブジェクトはありますか?現時点では、私は単にMkDir()関数を使用しています。 – toolshed

+0

@Addiktあなたが以前の質問に対するSiddhartの答えに従って使っていると思っていました。 mkdirについてはわかりませんが、同じ制限があると思います。 – assylias

+1

はい、結果のディレクトリパスが260文字を超えると、MkDir()は失敗します。 – Alain

関連する問題