我有一个csv文件的导入规范,当我通过GUI在文件上运行它时,它工作得很好。但是,当我通过VBA运行它时,出于某种原因,它忘记了一列应该是一个文本列,并使其成为一个数字列,从而导致大量的错误。MS Access:导入规范不通过VBA工作
我的代码如下。它工作从一种意义上说,一切运行正常,但由于某些原因,CSV的导入规范无法正常运行。无意义的案例切换是一个占位符,因为在我第一次工作后,我需要添加更多类型的报告。
Sub ImportDE(Folder As Object)
Dim db As DAO.Database
Dim names As DAO.Recordset
Dim Files As Object, file As Object, SubFolders As Object, subfolder As Object
Dim ExString As Variant
Dim check As Boolean
Dim FileChange As String
Set db = CurrentDb
On Error Resume Next: db.TableDefs.Delete "tblImport": On Error GoTo 0
db.TableDefs.Refresh
Set names = CurrentDb.OpenRecordset("SELECT Old FROM DENames")
Set Files = Folder.Files
Set SubFolders = Folder.SubFolders
For Each subfolder In SubFolders
ImportDE subfolder
Next
With names
Do While Not .EOF
ExString = .Fields(0)
For Each file In Files
If InStr(file.Type, "Worksheet") > 0 Then
If InStr(file.Path, ExString & ".xls") > 0 Then
DoCmd.TransferSpreadsheet _
TransferType:=acImport, _
SpreadsheetType:=acSpreadsheetTypeExcel9, _
TableName:="tblImport_" & ExString, _
filename:=file.Path, _
HasFieldNames:=True, _
Range:="A:CT"
db.TableDefs.Refresh
End If
ElseIf InStr(file.Type, "Comma Separated") > 0 Then
If InStr(file.Path, ExString & ".csv") > 0 Then
Select Case ExString
Case "Usage"
DoCmd.TransferText _
TransferType:=acImportDelim, _
SpecificationName:=UsageCSV, _
TableName:="tblImport_" & ExString, _
filename:=file.Path, _
HasFieldNames:=True
db.TableDefs.Refresh
End Select
End If
End If
Next
.MoveNext
Loop
End With
db.Close: Set db = Nothing
End Sub
我是否缺少明显的东西?为什么进口规格不能正常工作?
嗯,我觉得适当愚蠢,谢谢! – user2395059
不客气。这个问题已经让很多人感到困扰。使用Access的在线帮助功能交朋友。这并不完美,但仍然值得检查,以确保正确使用命令参数。祝你好运。 – HansUp