2016-01-25 79 views
0

我想從Excel表導入數據到訪問表。我正試圖自動化數據處理程序。所以我可以讀取數據訪問此代碼:導入Excel工作表到訪問

Private Sub ctlOpen_Click() 
    Set f = Application.FileDialog(3) 
    f.AllowMultiSelect = False 

    If f.Show Then 
    strExcelPath = f.SelectedItems(1) 
    End If 
    Call DoCmd.TransferSpreadsheet(acImport, _ 
    acSpreadsheetTypeExcel8, "InitialTable", strExcelPath, _ 
    True) 
End Sub 

但我得到一個錯誤。它創建另一個表,稱爲導入錯誤,指出「類型轉換失敗」,後跟列名和行號。

問題是我的Excel表格上有一個名爲ETA的列,它有一個日期。列中大部分字段的月份/日期類似('1/20'或1/17'),但某些字段的代碼類似'BAD'或'CP'。我的部分數據處理將會將所有'壞'的事件從今天改爲一週,而'CP'的公式則會改變。

所以我的問題是:是否有一種方法,一切都被讀爲DoCmd.TransferSpreadsheet()或任何其他方式的字符串?

+0

我對你爲什麼不執行你的「數據處理不明'在導入之前。 – Jeeped

+0

@Jeeped其他需要的東西大部分已經在訪問表單上。我正在嘗試創建另一個用戶指向excel文件的按鈕,然後它會將格式化的數據導出到訪問表中。在我的代碼中,初始化本質上是一個臨時表。 – USER420

+1

其中的謊言就在這裏!電子表格和數據庫之間的經典區別。在電子表格中,您可以在列中輸入任何字符串/日期/布爾值/數字。如果您不遵守列的數據類型,數據庫將懲罰您。訪問'日期時間字段需要每個分段日,月和年:'MM/DD/YYYY'或'DD/MM/YYYY'(取決於您的區域設置)。如果時間('HH:MM:SS')被忽略,午夜被認爲是'00:00:00'。 – Parfait

回答

2

您可以手動與所有的列作爲字符串導入的表和保存導入,並從代碼中調用的DoCmd.RunSavedImportExport「你導入名稱」