【发布时间】:2020-07-13 20:07:54
【问题描述】:
我创建了代码,用于通过 TransferSheet 和构建的 Query 方法将数据从 Excel 导入所需的表。我也在尝试解决用户在将数据导入数据库时可能出现的所有错误(错误的文件格式、追加 0 行、字段名称与数据库中的不同等),但无法摆脱错误 3059“无法追加所有数据到表” - 当您尝试导入一些无效数据时会发生这种情况。我想要一个针对此错误的自定义 Msgbox,并停止执行我的查询。这是我的代码 - 简而言之:
Private Sub CmdImport_Click()
Dim SQL As String
Dim dbs As DAO.Database
Set dbs = CurrentDb
On Error GoTo ERR1
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "NEWTABLE", "<Imported file>", True
SQL = " INSERT INTO MyTable (Field1)" & _
" SELECT DISTINCT" & _
" FROM NEWTABLE"
DoCmd.SetWarnings False
dbs.Execute SQL
DoCmd.RunSQL "DELETE * FROM NEWTABLE"
DoCmd.SetWarnings True
ERR1:
If Err.Number = 3059 Then
MsgBox "This file doesn't have proper data to import. Import canceled !"
Exit Sub
End If
End Sub
无论DoCmd.SetWarnings False如何,Access都已打开内置窗口后,此代码会弹出自定义Msgbox。如果我在 TransferSheet 方法之前移动DoCmd.SetWarnings False,导入会被执行并且不会显示 Msgbox - 这是错误的。我该如何处理这个错误,有人知道吗??
【问题讨论】:
-
看起来这个是硬摇滚。仍然没有找到任何可行的方法。
标签: ms-access vba ms-access-2010