Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 将Excel工作表导入access_Ms Access_Vba_Ms Access 2010 - Fatal编程技术网

Ms access 将Excel工作表导入access

Ms access 将Excel工作表导入access,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,我正在尝试将数据从Excel工作表导入access表。我正在尝试自动化数据操作过程。因此,我可以通过以下代码将数据读入access: Private Sub ctlOpen_Click() Set f = Application.FileDialog(3) f.AllowMultiSelect = False If f.Show Then strExcelPath = f.SelectedItems(1) End If Call DoCmd.Transfe

我正在尝试将数据从Excel工作表导入access表。我正在尝试自动化数据操作过程。因此,我可以通过以下代码将数据读入access:

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
但是我犯了一个错误。它创建另一个名为import errors的表,声明“类型转换失败”,后跟列名和行号

问题是,我的excel工作表上有一列名为ETA,它有一个日期。列中的大多数字段的月/日类似于('1/20'或1/17'),但一些字段的代码类似于'BAD'或'CP'。我的数据操作的一部分是将所有“坏”的东西从今天起改为一周,并用不同的公式表示“CP”


所以我的问题是:在DoCmd.TransferSpreadsheet()或任何替代文件中,是否有一种方法可以将所有内容都读取为字符串?

您可以手动将表中的所有列作为字符串导入,并将导入和代码调用保存为DoCmd.RunSavedImportExport“您的导入名称”

您可以手动导入所有列为字符串的表,并将导入和代码调用保存为DoCmd.RunSavedImportExport“您的导入名称”

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