Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 创建绝对目录>256个字符的文件夹树?_Vba_Windows 7_Excel - Fatal编程技术网

Vba 创建绝对目录>256个字符的文件夹树?

Vba 创建绝对目录>256个字符的文件夹树?,vba,windows-7,excel,Vba,Windows 7,Excel,我有一个Excel VBA宏,它基于Excel文件创建文件夹树 我当前的问题是,每当绝对目录变长时,我似乎都会出错 程序将抛出运行时错误76未找到路径。我觉得这是因为脚本引用的绝对路径超过256个字符 这方面有什么办法吗?或者,我的唯一选择是缩短文件夹名称,从而缩短绝对路径字符串 编辑 我使用的代码如下所示: Dim asheet As Range, r As Range, c As Range Dim fPath As String, tmp As String Set asheet = A

我有一个Excel VBA宏,它基于Excel文件创建文件夹树

我当前的问题是,每当绝对目录变长时,我似乎都会出错

程序将抛出运行时错误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是一个自定义函数,它只需从字符串中删除特殊字符,即!、u、@、$、&、*、^、,和%


有没有其他方法可以用来创建这些文件夹,它们可能会使用相对路径而不是绝对路径?

windows API在某些情况下有一个C:\+256个字符+。如果您提到上一个问题,您是否尝试过使用SHFileOperationW而不是SHFileOperationA?

windows API在某些情况下有一个C:\+256个字符+。如果您提到上一个问题,您是否尝试过使用SHFileOperationW而不是SHFileOperationA?

我也没有使用。这些是文件系统对象吗?目前,我只是在使用MkDir函数。@Addikt我以为您是在按照Siddhart对上一个问题的回答来使用它的。我不确定mkdir,但我相信它有相同的限制。是的,如果生成的目录路径超过260个字符,mkdir将失败。我不使用这两种方法。这些是文件系统对象吗?目前,我只是在使用MkDir函数。@Addikt我以为您是在按照Siddhart对上一个问题的回答来使用它的。不确定mkdir,但我相信它有相同的限制。是的,如果生成的目录路径超过260个字符,mkdir将失败。