帮我优化以下VBA代码,并在导入时判断是否存在同样的数据,导入完成后删除源文本: DoCmd.TransferSpreadsheet acImport, 10, "场景使用清单", "C:\Users\icd\Desktop\5月场景使用清单(按日)\场景服务方案使用清单05.01.xlsx", True, "" DoCmd.TransferSpreadsheet acImport, 10, "场景使用清单", "C:\Users\icd\Desktop\5月场景使用清单(按日)\场景服务方案使用清单05.02.xlsx", True, "" DoCmd.TransferSpreadsheet acImport, 10, "场景使用清单", "C:\Users\icd\Desktop\5月场景使用清单(按日)\场景服务方案使用清单05.03.xlsx", True, "" DoCmd.TransferSpreadsheet acImport, 10, "场景使用清单", "C:\Users\icd\Desktop\5月场景使用清单(按日)\场景服务方案使用清单05.04.xlsx", True, "" DoCmd.TransferSpreadsheet acImport, 10, "场景使用清单", "C:\Users\icd\Desktop\5月场景使用清单(按日)\场景服务方案使用清单05.05.xlsx", True, "" DoCmd.TransferSpreadsheet acImport, 10, "场景使用清单", "C:\Users\icd\Desktop\5月场景使用清单(按日)\场景服务方案使用清单05.06.xlsx", True, ""
时间: 2023-06-28 18:07:20 浏览: 192
以下是代码的优化版本,包括添加了判断是否存在同样的数据和导入完成后删除源文本的功能:
```
Dim filePaths(5) As String
Dim i As Integer
' 设置文件路径
filePaths(0) = "C:\Users\icd\Desktop\5月场景使用清单(按日)\场景服务方案使用清单05.01.xlsx"
filePaths(1) = "C:\Users\icd\Desktop\5月场景使用清单(按日)\场景服务方案使用清单05.02.xlsx"
filePaths(2) = "C:\Users\icd\Desktop\5月场景使用清单(按日)\场景服务方案使用清单05.03.xlsx"
filePaths(3) = "C:\Users\icd\Desktop\5月场景使用清单(按日)\场景服务方案使用清单05.04.xlsx"
filePaths(4) = "C:\Users\icd\Desktop\5月场景使用清单(按日)\场景服务方案使用清单05.05.xlsx"
filePaths(5) = "C:\Users\icd\Desktop\5月场景使用清单(按日)\场景服务方案使用清单05.06.xlsx"
' 遍历文件路径数组,逐个导入Excel数据
For i = 0 To UBound(filePaths)
' 判断是否存在同样的数据
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT COUNT(*) FROM 场景使用清单 WHERE 文件路径 = '" & filePaths(i) & "'")
If rs.Fields(0).Value > 0 Then
MsgBox "文件 " & filePaths(i) & " 中的数据已经存在于数据库中。"
Else
' 导入Excel数据
DoCmd.TransferSpreadsheet acImport, 10, "场景使用清单", filePaths(i), True, ""
' 添加文件路径到新导入的记录
CurrentDb.Execute "UPDATE 场景使用清单 SET 文件路径 = '" & filePaths(i) & "' WHERE 文件路径 IS NULL"
' 删除源文本
Kill filePaths(i)
End If
Next i
```
需要注意的是,上述代码中的 `场景使用清单` 表需要自行创建,其中需要包含至少以下字段:
- ID:主键,自增长
- 文件路径:文本类型,记录导入的Excel文件路径
- 其他字段:根据具体情况添加
此外,还需要添加对 DAO 库的引用。在 VBA 编辑器中,依次点击“工具”→“引用”,勾选“Microsoft DAO 3.6 Object Library”即可。
阅读全文