访问VBA代码以防止从Excel重复导入

时间:2015-08-06 20:32:54

标签: vba access-vba

我构建了这个简单的Access DB(2010),可以将Excel电子表格中的11个字段导入到单个表中。我还没有做的是检查表中的记录是否存在,并且不再导入它创建重复项。

商业案例: 用户每天收到数百个电子表格(一个表单由一个字段中的员工使用)。用户将所有这些电子表格保存在指定的文件夹中,VBA代码仅从中获取一些数据并插入Access DB中的单个表格中。导入完成后,我会要求用户手动将所有这些电子表格移动到存档文件夹中。我知道这个过程很容易再次导入相同的电子表格。我想在我的VBA代码中添加一个检查,以检查记录是否存在并忽略它。它需要检查3个字段:员工姓名,日期和位置,因为每个员工每个位置每天只应该有一个报告。 我是新手,我只是在学习VBA,所以我在网上发现的一些解决方案对我来说还不够。想要重用的特定代码示例。我目前的代码(我也在网上找到并修改为我工作)是这样的。

Function DoImport()

Dim strPathFile As String
Dim strFile As String
Dim strPath As String
Dim blnHasFieldNames As Boolean
Dim intWorksheets As Integer
Dim strWorksheets(1 To 1) As String
Dim strTables(1 To 1) As String
strWorksheets(1) = "data"
strTables(1) = "my_table"
blnHasFieldNames = True
strPath = "folder path were user originally saves all reports"
For intWorksheets = 1 To 1

  strFile = Dir(strPath & "*.xlsm")
  Do While Len(strFile) > 0
        strPathFile = strPath & strFile
        'MsgBox strPathFile
        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, strTables(intWorksheets), strPathFile, blnHasFieldNames, strWorksheets(intWorksheets) & "$"
        strFile = Dir()
  Loop

Next intWorksheets
End Function

谢谢你的不同。

1 个答案:

答案 0 :(得分:1)

在表格中,使用三个字段创建唯一索引。此示例假定字段的名称为EmployeeName,RecordDate和Location:

这不允许插入三个字段的重复项。

enter image description here