在VBA excel中损坏的文件名
在晴朗的蓝天之中,我突然间发现了一个我从未见过的错误,我不知道为什么会这样,因为我没有做任何事情来造成这个问题。
我试图打开一个.csv文件,我已经成功完成了数千次。 代码如下:
ChDir "KathyStringHD:Library:WebServer:Documents:DispatchReports:DispatchReportsFolder:" NextFile = Dir("") Do While NextFile <> "" If NextFile <> ".DS_Store" Then Extension = Right(NextFile, 4) If Extension = ".csv" Then SaveFile = Left(NextFile, Len(NextFile) - 4) & ".xlsx" MsgBox NextFile Call ProcessMonthlyReport(NextFile, Extension, SaveFile, sPath, SavePath) End If End If NextFile = Dir Loop
除了一个文件,一切都可以运作 该文件的名称是'ACTStillwater February,2013.csv',但是当例程试图打开这个文件时,该名称被破坏以读取'ACTStillwater Februa#,6个随机hex数,然后.csv'。 附录看起来像一个颜色代码,但我没有在文件本身,或在生成该文件的PHP脚本。 当我进入Finder并获取文件信息时,名字在那里很好。 正如我所说的,我有什么模糊的错误是只在一个文件。
看起来在文件名中有一个逗号:
ACTStillwater February , 2013.csv
尝试删除它:
ACTStillwater February 2013.csv
看看它现在会运行。
有关详细信息,请参阅MSDN – 文件名(Windows)
我怀疑这不是逗号,而是文件名超过32个字符的事实。
我发现在vba中打开一个文件或文件夹名称超过32个字符的整个path的文件将会失败。
这也许可以解释为什么突然发生的问题:
'ACT Stillwater February,2013.csv'有33
鉴于:
'ACT Stillwater 2013年1月.csv
有32
只是一个想法。
如果你的path是
“KathyStringHD:库:WebServer:Documents:DispatchReports:发送报表文件夹:”
这也会失败
鲍勃·J