You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批量导入多个Excel文件到Access表时出现Wend无While编译错误如何解决

报错原因

VBA中存在两种条件循环的语法,你的代码混用了两种语法的配对规则,导致编译不通过:

  • While 条件 ... Wend:是旧版的循环语法,开头不需要加Do,结尾用Wend闭合
  • Do While 条件 ... Loop:是更通用的Do循环语法,开头带Do,结尾必须用Loop闭合

你当前的代码以Do While开头,却用Wend做闭合,编译器无法找到和Wend匹配的独立While开头语句,因此抛出「Wend without While」的错误。

修复方案

两种修改方式二选一即可:

方案1:保留Wend,删除开头的Do

Option Compare Database

Function Impo_allExcel()
    Dim myfile As String
    Dim mypath As String

    mypath = "C:\Users\bbnewman\Desktop\Temp\temp\"
    myfile = Dir(mypath & "*.xlsx") ' 直接指定过滤规则,省去后续判断
    While myfile <> ""
        DoCmd.TransferSpreadsheet acImport, 10, "LCRHistory", mypath & myfile
        myfile = Dir()
    Wend
End Function

方案2:保留Do While,把结尾的Wend改为Loop

Option Compare Database

Function Impo_allExcel()
    Dim myfile As String
    Dim mypath As String

    mypath = "C:\Users\bbnewman\Desktop\Temp\temp\"
    myfile = Dir(mypath & "*.xlsx") ' 直接指定过滤规则,省去后续判断
    Do While myfile <> ""
        DoCmd.TransferSpreadsheet acImport, 10, "LCRHistory", mypath & myfile
        myfile = Dir()
    Loop
End Function

额外优化说明

  • 原代码里的ChDir语句可以删除,你在导入时已经拼接了完整的文件路径,不需要额外切换工作目录
  • 给变量声明指定类型(As String)可以避免后续隐式类型转换带来的异常
  • 直接在Dir参数中指定*.xlsx过滤条件,不需要额外加If判断文件名后缀,代码更简洁

内容的提问来源于stack exchange,提问作者Brent Newman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:06:01