Excel VBA - 使用变量时,MkDir返回“未找到路径”

时间:2013-12-18 14:55:49

标签: excel vba excel-vba

所以这里是我的代码的相关片段(COPSFolder是其他地方定义的常量):

Sub CreateReport(ByRef InfoArray() As String)

Dim BlankReport As Workbook
Dim ReportSheet As Worksheet

Dim ProjFolder As String

ProjFolder = COPSFolder & "InProgress\" & InfoArray(3) 
If Not Dir(ProjFolder, vbDirectory) = vbNullString Then
   Debug.Print ProjFolder
   MkDir ProjFolder <-----ERROR 76 HAPPENS HERE
End If

在指示的行上,ProjFolder & "InProgress\"是现有目录。我正在尝试根据字符串数组中的值在其中创建一个文件夹。

这是令我难以置信的。如果我用字符串(例如“12345”)替换“InfoArray(3)”它可以正常工作,但尝试使用数组中的元素将引发错误。该数组在引用的任何地方都被定义为一个字符串,并且模块中的其他地方没有类型不匹配。

编辑:Public Const COPSFolder As String = "\\ktch163\COPS\"

edit2:这是另一个奇怪的事情 - 如果我将InfoArray(3)替换为Str(InfoArray(3)),那么它似乎很重要。我没有得到的是InfoArray(3)的值已被定义为字符串。此外,它在值前面添加了一个空格。我想我可以使用Right(Str(InfoArray(3)), 5),但想知道真正的问题在这里。

edit3:根据要求,这里是InfoArray()的填充方式:

    Public Function GetPartInfo(ByRef TextFilePath As String) As String()
'Opens text file, returns array with each element being one line in the text file
'(Text file contents delimited by line break character)

   Dim fso As FileSystemObject: Set fso = New FileSystemObject
   Dim Info As Variant
   Dim txtstream As Object
   Dim item as Variant

   Debug.Print TextFilePath

   Set txtstream = fso.OpenTextFile(TextFilePath, ForReading, False)

   GetPartInfo = Split(txtstream.ReadAll, Chr(10))

   For Each item In GetPartInfo
      item = Trim(item)
   Next
    End Function

稍后在代码中 - InfoArray = GetPartInfo(File.Path)。 (File.Path工作正常,运行GetPartInfo时没有错误

1 个答案:

答案 0 :(得分:4)

问题是您使用Chr(10)进行拆分这不是删除空格。因此,当您致电ProjFolder = COPSFolder & "InProgress\" & InfoArray(3)时,InfoArray(3)

中有空格

您有3个选项

  1. 创建数组时,删除那里的空格OR

  2. 在分配InfoArray = GetPartInfo(File.Path)时,删除那里的空格或

  3. 将第ProjFolder = COPSFolder & "InProgress\" & InfoArray(3)行更改为ProjFolder = COPSFolder & "InProgress\" & Trim(InfoArray(3))