我有一個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