MkDir不接受变量参数(EXCEL-VBA)

时间:2016-02-17 19:09:51

标签: excel vba excel-vba

其他人问过类似但不同的question. 但他们的方法对我不起作用。

我正在编写一个Sub来遍历列表,将明文转换为基于单元格内容的超链接。它只是追加String" CellContents"到一个常数" MyPath"。

的末尾

如果链接目录不存在,我写了一个If语句来制作链接目录,但是当我介绍它时,我遇到了无数错误。目前通常的是#34;错误76:未找到路径"。

            Path = Trim(MyPath & CellContents & "\")
            If Dir(Path, vbDirectory) = "" Then
                Call MkDir(Path)
            End If

我也试过

             If Dir(Path, vbDirectory) = "" Then
                MkDir Path
             End If

我确定知道包含文件夹存在,并且我已尝试单独使用Call MkDir和MkDir。我也尝试过Path上的Trim()/ no Trim(),它没有解决它(输入是字符串,所以Str()导致它自己的错误)。我也尝试过Len(Dir(Path)= 0条件,没有一个帮助MkDir识别Path是一个有效的路径!为什么它没有被正确识别?

2 个答案:

答案 0 :(得分:0)

这对我有用:

Sub ytrewq()
    Dim s As String, s2 As String

    s = "C:\TestFolder\zzzz\"
    On Error Resume Next
        MkDir s
    On Error GoTo 0
End Sub

在使用之前检查 Dir()的参数。

答案 1 :(得分:0)

我的问题是我的一些输入字符串在Windows文件系统规则下包含非法字符,我只是将它们转换为带有Replace()的空格并解决了问题(这可以作为函数或子函数)

      Function Replacement(Clean As String)
           Clean = Replace(Clean, Chr(10), " ")
           Clean = Replace(Clean, Chr(13), " ")
           Clean = Replace(Clean, Chr(13) & Chr(10), " ")
           Clean = Replace(Clean, "?", " ")
           Clean = Replace(Clean, "/", " ")
           Clean = Replace(Clean, """", " ")
           Clean = Replace(Clean, ":", " ")
           Clean = Replace(Clean, "<", " ")
           Clean = Replace(Clean, ">", " ")
           Clean = Replace(Clean, "|", " ")
           Clean = Replace(Clean, "*", " ")
           Replacement = Clean
      End Function

感谢您的帮助(对于所有使用某些正则表达式的人来说,替换()可能是更好的方法,但是[]在我的Replace()语句中没有工作)

编辑注意:为了获得最佳效果,我添加了Chr10 / 13/10和13行以删除各种行返回元标记,它们在Windows目录名称中也是不允许的。