VBA报错‘Bad file name or number’:特定文件夹创建失败原因排查
问题分析与修复方案
首先,我注意到你的VBA代码里有个明显的语法问题,这可能是导致异常的导火索,先帮你修正这个:
代码中的语法错误
你的FolderExist函数漏掉了End If语句,这会让函数执行逻辑混乱,无法正确判断文件夹是否存在。修正后的代码如下:
Function FolderExist(ByVal path As String) As Boolean FolderExist = False Dim fso As New FileSystemObject If fso.FolderExists(path) Then FolderExist = True End If ' 补上缺失的结束语句 End Function
这个错误可能会让函数在某些场景下返回错误的结果,导致FolderCreate尝试执行不必要的创建操作,进而触发错误。
文件夹名称的潜在问题
如果修复代码后仍然出现Bad file name or number错误,那问题大概率出在Akus Marcin 20180108001这个名称本身,我梳理了几个可能的原因:
- 隐藏的非法字符:检查这个文件夹名称里是否有全角空格、制表符、换行符这类肉眼看不到的字符,或者Windows明令禁止的文件名字符(比如
/ \ : * ? " < > |)。有时候复制粘贴路径时会不小心带入这些字符,很容易被忽略。 - 路径总长度超限:Windows传统路径的最大长度是260字符(包含所有父路径和文件名)。你可以计算一下
U:\Paweł\Generator\Akus Marcin 20180108001的总字符数,如果超过260就会触发这个错误。 - 编码兼容性问题:虽然
ł字符在Windows中是支持的,但如果你的系统非Unicode程序的语言设置不是波兰语,偶尔会出现路径解析异常。不过你能成功创建另一个包含Paweł的路径,这个可能性比较小。
快速验证方法
你可以先手动在U:\Paweł\Generator目录下创建Akus Marcin 20180108001文件夹:
- 如果手动创建失败,说明名称或路径长度确实有问题,需要调整名称或者启用Windows长路径支持;
- 如果手动创建成功,那只要修复
FolderExist函数的语法错误,代码就能正常运行了。
内容的提问来源于stack exchange,提问作者Paweł Pożerski
相关产品推荐
相关产品推荐

