Excel VBA – 使用variables时,MkDir返回“未findpath”

所以这里是我的代码的相关代码片断(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\"是一个现有的目录。 我试图根据string数组中的值创build一个文件夹。

这是什么使我惊讶。 如果我用一个string(例如“12345”)replace“InfoArray(3)”,它工作正常,但试图使用数组中的元素将抛出错误。 该数组被定义为一个string,在其引用的任何地方,并且模块中的其他地方没有types不匹配。

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

编辑2:这是另一个奇怪的事情 – 如果我用Str(InfoArray(3))replaceInfoArray(3) ,它似乎拖曳。 我没有得到的是InfoArray(3)的值已经被定义为一个string。 而且,它在值的前面增加了一个空格。 我可以使用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时没有错误

问题是,你正在分裂使用Chr(10)这不是删除空格。 因此,当您调用ProjFolder = COPSFolder & "InProgress\" & InfoArray(3)InfoArray(3)

你有3个选项

  1. 在创build数组时,请删除那里的空格

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

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