我有一个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
如果这些都没有意义,请询问。我只是觉得必须有一种方法来捕获有错误的行。
谢谢大家!
答案 0 :(得分:0)
使用VBA导入数据时,Access不会像将数据复制/粘贴到表中那样将有错误的行放入Paste Errors
表中。
您可以做的是将表的副本创建为TempImport表,并删除所有阻止导入行的约束(验证)。然后将Excel数据导入此TempImport表。现在,使用代码和/或查询来验证TempImport中的数据。如果所有行都正确,请将它们从TempImport表追加到最终表。如果有任何错误的行,请将其导出为所需的格式以发送回去,然后丢弃TempImport中的所有内容。