Excel VBA如何在指定文件夹存在时弹出警告并解决运行时错误#75
问题原因&修正方案
错误根因
你当前逻辑失效、触发运行时错误#75的核心问题是Dir函数的默认调用规则:Dir默认只识别文件,如果目标路径是文件夹,不带参数的Dir调用会返回空字符串,导致你的判断逻辑误判为文件夹不存在,执行MkDir重复创建已存在的文件夹,直接抛出路径访问错误。
修正后完整代码
Private Sub ExportSheets() ' 将所有可见工作表导出为csv文件 Dim ws As Worksheet, wbNew As Workbook Dim sFolderPath As String Dim fs As Object sFolderPath = ThisWorkbook.Path & Application.PathSeparator & "Import Templates" ' 检测文件夹是否存在,vbDirectory参数指定识别文件夹对象 If Dir(sFolderPath, vbDirectory) <> "" Then ' 文件夹已存在时弹窗提示,然后直接退出过程 MsgBox "Import Templates文件夹已存在,请重命名或删除该文件夹后重试!", vbInformation, "导出提示" Exit Sub Else ' 文件夹不存在时创建 MkDir sFolderPath End If ' 遍历所有工作表执行导出 For Each ws In ThisWorkbook.Sheets If ws.Visible Then Debug.Print "正在导出: " & ws.Name ws.Copy Set wbNew = Application.ActiveWorkbook wbNew.SaveAs sFolderPath & Application.PathSeparator & ws.Name & ".csv", 23 wbNew.Close Set wbNew = Nothing End If Next ws MsgBox "所有可见工作表已导出完成!", vbInformation, "操作成功" ' 资源释放 Set ws = Nothing End Sub
主要调整点
- 给
Dir函数添加vbDirectory参数,支持识别文件夹对象,检测逻辑正常生效 - 弹窗提示后新增
Exit Sub直接终止程序,避免后续导出逻辑继续执行报错 - 用
Application.PathSeparator代替硬编码的反斜杠\,适配Mac等不同系统的路径规则 - 新增导出完成提示,优化使用体验
内容的提问来源于stack exchange,提问作者Billy Jenkins
相关产品推荐
相关产品推荐

