2017-09-15 27 views
2

我正在使用VBA DoCmd.TransferText命令將數據從CSV文本文件導入到Access數據庫中的新表中。我遇到了一些問題,其中某些文件的前三列中的文本數據導入爲貨幣。我無法弄清楚發生了什麼事。TransferText不正確地導入像「FS ###」這樣的字符串作爲貨幣

Here是與正確導入(VollintineLines.csv)一個CSV沿測試數據庫...

PipeID,UpstreamMH,DownstreamMH,Diameter,GISLength,Status 
WS010353S,WS010353,WS010163,36,227.1984614,Fully Surveyed as Phase Work 
WS011155S,WS011155,WS011154,8,418.5435318,Not Surveyed 
WS011154S,WS011154,WS011153,8,303.9618911,Fully Surveyed as Phase Work 

...和一個不(CourtLines.csv)。

PipeID,UpstreamMH,DownstreamMH,Diameter,GISLength,Status 
FS020628S,FS020628,FS020462,10,278.72,Not Surveyed 
FS020463S-1,FS020463,FS020462,12,248.39,Not Surveyed 
FS020216S,FS020216,FS020215,12,227.53,Fully Surveyed as Phase Work 

(請忽略數據庫中的無名對象,它只是要弄清楚這到底是怎麼回事,我沒有理會事物命名。)

這裏是進口的代碼,你有啓用Microsoft Office 16.0對象庫參考。

Private Sub Command0_Click() 
Dim Path As FileDialog 
Dim FileName As Variant 
DoCmd.SetWarnings False 
DoCmd.Hourglass True 
Set Path = Application.FileDialog(msoFileDialogFilePicker) 

    With Path 
    .AllowMultiSelect = False 
    .Title = "Select your File" 
    .Filters.Add "All Files", "*.*" 
    If .Show = -1 Then 

     For Each FileName In .SelectedItems 
     DoCmd.TransferText acImportDelim, , "TempPipeData", FileName, True 
     Next FileName 

    Else 
     MsgBox "No File Selected to Import." 
    End If 

    End With 
DoCmd.SetWarnings True 
DoCmd.Hourglass False 

End Sub 
+0

測試數據庫的ZIP文件缺少Access DB的文件名! –

+0

現在已修復,對不起! –

回答

0

你顯然遇到影響不使用導入規格TransferText調用一個相當不起眼的錯誤。 (它也在其他網站上here討論)

變通方法包括:

  1. this answer描述使用導入規格。
  2. 先創建表格,指定所需的列類型(在這種情況下爲Text),然後從CSV文件導入到現有(空)表格中。
  3. 如果沒有上述選項是可取的,那麼你可以使用COM自動化來
    • 推出的Excel的實例,
    • 有Excel中打開CSV文件,
    • 將其保存到XLS或XLSX,
    • 在Access VBA中使用TransferSpreadsheet導入Excel數據,然後
    • 刪除臨時XLS [X]文件。
+0

謝謝你,與#2一起,只是在導入後清空表格,而不是刪除它的工作。 另外,感謝您編輯我原來的帖子,使其更清晰。 –