我一直在寻找一个月来如何做到这一点的答案,现在几乎没有帮助。
我想做什么:
我有一个Access 2013数据库(accdb),我需要将Excel(CSV)报告导入。我让导入VBA正常工作。我每周从一个站点获取报告,并希望通过访问更好地使用数据。我试图确保导入不允许导入相同的报告,以防止重复。我将尝试查询来自多个报告的结果,并且导入都将进入一个表。我在表中添加了一个字段,用于导入日期/时间,默认为Now()
,因此我可以看到该记录属于哪个报告。我需要尝试使用CSV报告文件名(20140625.csv)更新表。我想我的那部分也正常工作,记录值是20140625.
我遇到的问题:
我无法在表中搜索文件名记录,如果记录与文件名匹配则不允许导入。我尝试了dlookup和几个不同的东西。什么都行不通。
这是我到目前为止所做的:
Sub ImportCSV()
'First add reference to Microsoft Office Object Library
Dim strfilename As String
Dim rptN As String
Dim rptF As String
Dim look As String
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Select the CSV file to import"
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "CSV Files", "*.csv", 1
.Filters.Add "All Files", "*.*", 2
If .Show = -1 Then
strfilename = .SelectedItems(1)
rptF = Right(strfilename, Len(strfilename) - InStrRev(strfilename, "\"))
rptN = Left(rptF, InStrRev(rptF, ".") - 1)
End If
End With
'dlookup not finding anything but first record in table
look = DLookup("[rptName]", "tblCSVlog", "[rptName] = 'rptN'")
If rptN = look Then
'If rptN = DoCmd.FindRecord("'rptN'") = True Then
MsgBox "Report " & rptF & " Already Exists"
GoTo Hell
'End If
Else
'Import Works
DoCmd.TransferText acImportDelim, , "GlobalRptCSV", strfilename, True
'Add FileName to Table Works
DoCmd.RunSQL ("insert INTO tblCSVlog ([rptName])Values (" & rptN & ")")
Hell:
'Else
'Exit Sub
End If
'End With
Exit Sub
End Sub
有什么想法吗?我用变量rptN,“rptN”,“'rptN'”尝试了各种各样的dlookup变体。没有什么能在表中找到匹配。
答案 0 :(得分:1)
您似乎已将变量与其名称混淆。尝试:
look = DLookup("[rptName]", "tblCSVlog", "[rptName] = '" & rptN & "'")