【问题标题】:Importing Excel sheet into access将 Excel 工作表导入 access
【发布时间】:2016-01-25 19:34:18
【问题描述】:

我正在尝试将 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() 或任何替代方法中将所有内容都读取为字符串?

【问题讨论】:

  • 我不清楚您为什么在导入前不执行“数据操作”。
  • @Jeeped 大多数其他需要的东西已经在访问表单上。我正在尝试创建另一个按钮,其中用户指向 excel 文件,然后它将导出访问表中的格式化数据。在我的代码中,initialtable 本质上是一个临时表。
  • 问题就在这里!电子表格和数据库之间的经典区别。在电子表格中,您可以在列中输入任何字符串/日期/布尔值/数字。如果您不遵守列的数据类型,数据库会惩罚您。 Access 的日期时间字段需要每个段的日、月和年:MM/DD/YYYYDD/MM/YYYY(取决于您的区域设置)。如果省略时间 (HH:MM:SS),则假定为午夜 00:00:00

标签: ms-access vba ms-access-2010


【解决方案1】:

您可以手动将包含所有列的表导入为字符串,并将导入和代码调用保存为 DoCmd.RunSavedImportExport "Your import name"

【讨论】:

    猜你喜欢
    • 2011-11-16
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多