【发布时间】:2014-06-26 11:27:19
【问题描述】:
一个多月以来,我一直在寻找有关如何执行此操作的答案,但几乎没有任何帮助。
我想做什么:
我有一个 Access 2013 数据库 (accdb),需要将 Excel (CSV) 报告导入其中。我让导入 VBA 正常工作。我每周从一个站点获取报告,并希望通过访问更好地使用这些数据。我试图确保导入不允许导入相同的报告,以防止重复。我将尝试从多个报告中查询结果,并且所有导入都放入一个表中。我在表格中添加了一个字段用于导入日期/时间,默认为Now(),这样我就可以看到该记录属于哪个报告。我需要尝试使用日期 (20140625.csv) 的 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 变体。没有在表中找到匹配项。
【问题讨论】:
-
您似乎将变量与其名称混淆了。试试看:
look = DLookup("[rptName]", "tblCSVlog", "[rptName] = '" & rptN & "'")
标签: ms-access variables vba import-from-excel