VBA中使用FileSystemObject创建新文件夹遇运行时错误52
解决VBA运行时错误‘52’:错误的文件名或编号
问题根源分析
你的代码存在几个潜在问题:
- 重复初始化
FileSystemObject(既用Dim FSO As New FileSystemObject又用Set FSO = CreateObject),冗余且可能引发异常 - 未处理工作簿未保存时
ThisWorkbook.Path为空的场景 - 手动拼接路径易出现斜杠错误,且未检查目标文件夹是否已存在
修正后的代码
以下是优化后的代码,覆盖了常见错误场景:
Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") ' 先验证工作簿是否已保存(未保存时Path为空) If ThisWorkbook.Path = "" Then MsgBox "请先保存当前工作簿再执行操作!" Exit Sub End If ' 使用FSO内置方法拼接路径,自动处理斜杠问题 Dim targetFolder As String targetFolder = FSO.BuildPath(ThisWorkbook.Path, "Test") ' 检查目标文件夹是否已存在,避免重复创建报错 If Not FSO.FolderExists(targetFolder) Then FSO.CreateFolder targetFolder MsgBox "文件夹创建成功" Else MsgBox "目标文件夹已存在" End If
额外排查方向
如果问题仍存在,检查以下几点:
- 路径合法性:确认
ThisWorkbook.Path包含的文件夹名没有Windows禁用字符(如?、*、:、"等) - 权限问题:尝试手动在工作簿所在目录新建文件夹,如果失败,说明Excel没有写入权限,需右键以管理员身份运行Excel
- 路径长度限制:Windows路径总长度不能超过260字符,若路径过长需缩短文件名或移动工作簿到层级更少的目录
内容的提问来源于stack exchange,提问作者Suraido
相关产品推荐
相关产品推荐

