2016-01-25 84 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“你导入名称”