2

Excelファイルに基づいてフォルダツリーを作成するExcelVBAマクロがあります。

私の現在の問題は、絶対ディレクトリが非常に長くなるたびにエラーが発生するように見えることです。

プログラムは実行時エラー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

Clean()は、文字列から特殊文字、つまり!、#、_、@、$、&、*、^、および%を削除するだけの自己定義関数です。

絶対パスではなく相対パスを使用する可能性のあるこれらのフォルダーを作成するために使用できる別の方法はありますか?

4

1 に答える 1

0

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

于 2012-05-08T16:58:28.530 に答える