在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