如果出现消息“ Microsoft Access无法附加所有数据...”,如何使Access 2010创建错误表。

时间:2018-09-11 16:26:43

标签: access-vba ms-access-2010

我有一个vba,可将excel中的数据导入Access 2010表中。问题在于Access表具有一些字段验证,这就是错误消息的原因。我可以接受错误,但我希望将有错误的行粘贴到错误表中。另外,excel数据不是我提供的,因此导入之前我无法验证数据。我想将“错误表”发送给发送给我的人以更正数据。这是我找到并运行的导入vba。

Public Function GetMyFile() As Boolean
On Error Resume Next
Dim fdFilePick As FileDialog
Dim varSelectedFile As Variant
Dim strInFile As String
Dim strImport70 As String
Set fdFilePick = Application.FileDialog(msoFileDialogFilePicker)
DoCmd.Hourglass True
    With fdFilePick
        .AllowMultiSelect = False
        .ButtonName = "&Import"
        .InitialFileName = Application.CurrentProject.Path
        .Filters.Add "Excel", "*.xlsx"
            If .Show Then
                For Each varSelectedFile In .SelectedItems
                    strInFile = CStr(varSelectedFile)
                    DoCmd.DeleteObject acTable, strImport70
                    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "Import70", strInFile, True
                Next
            Else
                MsgBox "Import Process Canceled", vbCritical, "Import Canceled"
                GetMyFile = False
                Exit Function
            End If
    End With
End Function

如果这些都没有意义,请询问。我只是觉得必须有一种方法来捕获有错误的行。

谢谢大家!

1 个答案:

答案 0 :(得分:0)

使用VBA导入数据时,Access不会像将数据复制/粘贴到表中那样将有错误的行放入Paste Errors表中。

您可以做的是将表的副本创建为TempImport表,并删除所有阻止导入行的约束(验证)。然后将Excel数据导入此TempImport表。现在,使用代码和/或查询来验证TempImport中的数据。如果所有行都正确,请将它们从TempImport表追加到最终表。如果有任何错误的行,请将其导出为所需的格式以发送回去,然后丢弃TempImport中的所有内容。