m0_71065990 2023-09-17 16:31 采纳率: 75%
浏览 10
已结题

在Excel中用VBA将数据导入Access,显示“自动化错误”

在Excel中写了如下代码,目的是将“Sheet1”工作表中的数据导入Access数据库“Database1”中的“表1”:

Sub test()
    Dim conn As ADODB.Connection
    Set conn = New ADODB.Connection
    conn.open "provider = microsoft.ace.oledb.12.0; data source = " & thisworkbook.path & "\Database1.accdb"
    conn.execute "delete from 表1"
    conn.execute "insert into 表1 select * from [Excel 12.0; database = " & thisworkbook.name & "].[Sheet1$]"
    conn.execute "insert into 表2 select * from 表3"
    conn.close
End Sub

但是其他代码都能正常执行,只有 conn.execute "insert into 表1 select * from [Excel 12.0; database = " & thisworkbook.name & "].[Sheet1$]" 这句会报错如下:

img

更奇怪的是,这句代码前一天完全可以正常运行没有问题,一天之后再运行就报错了,中间没有动过。

求指教是什么问题。感谢!

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2023-09-20 09:42
    关注

    引用 皆我百晓生 小程序回复内容作答:

    这个错误通常是由于出现了不兼容的数据类型或格式引起的。可以尝试以下解决方法:

    1. 检查Access数据库中的数据类型和Excel中的数据类型是否匹配。例如,确保目标表(“表1”)中的字段数据类型与Excel数据匹配。

    2. 检查Excel中数据是否有空值或其他不兼容的数据引起的错误。可以尝试删除表格中的所有空值,并确保所有数据与目标表的数据类型一致。

    3. 确保数据没有超过Access表中字段的限制。例如,如果Excel中有某些文本字段的字符数超过了Access表中字段的允许值,可能会导致错误。

    4. 确保数据库文件(Database1.accdb)没有损坏。可以尝试打开数据库文件并进行修复,或者创建一个新的数据库文件并尝试导入数据。

    5. 尝试重新安装Excel和Access以确保没有缺少的引用或组件。

    如果上述方法都没有解决问题,建议使用更详细的错误处理方式进行调试,以了解具体的错误原因。可以尝试使用以下代码来获取更详细的错误信息:

    On Error Resume Next
    conn.execute "insert into 表1 select * from [Excel 12.0; database = " & thisworkbook.name & "].[Sheet1$]"
    If Err.Number <> 0 Then
        MsgBox "Error: " & Err.Description
        Err.Clear
    End If
    On Error GoTo 0
    

    这样可以在发生错误时弹出一个消息框,显示具体的错误描述。希望这些信息对您有所帮助!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月12日
  • 已采纳回答 9月4日
  • 创建了问题 9月17日