Vba 不应该';当TextToColumns中的FieldInfo设置正确时,t文本到列转换为MS Access的文本?

Vba 不应该';当TextToColumns中的FieldInfo设置正确时,t文本到列转换为MS Access的文本?,vba,excel,ms-access,ms-access-2013,Vba,Excel,Ms Access,Ms Access 2013,您好,我正在迭代Excel工作簿中的所有列,并将它们文本化为列,以便MS Access将它们作为我想要的数据类型引入;然而,它似乎不工作的一个应该是短文本字段 有问题的字段有字段名“test”,然后是10个空白单元格,然后是第11-13行中的文本“test”,然后是空白等,即大量空白单元格和一些短文本字符串 With w.sheet("x") 'I go through some logic to set variables c to a column number and 'iFor

您好,我正在迭代Excel工作簿中的所有列,并将它们文本化为列,以便MS Access将它们作为我想要的数据类型引入;然而,它似乎不工作的一个应该是短文本字段

有问题的字段有字段名“test”,然后是10个空白单元格,然后是第11-13行中的文本“test”,然后是空白等,即大量空白单元格和一些短文本字符串

With w.sheet("x")

  'I go through some logic to set variables c to a column number and
  'iFormatType to either 2 for text, which is what I use for the "test" field, or 1 for general

.Columns(c).TextToColumns Destination:=.Cells(1, r.Column), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, _
            ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=False, _
            FieldInfo:=Array(1, iFormatType), TrailingMinusNumbers:=True

end with
正如在注释中提到的,当我单步执行时,字段“test”的iFormatType=2

稍后,我将工作簿导入MS Access,如下所示:

DoCmd.TransferSpreadsheet acImport, , "tbl_DatedModel_" & sSomeVariableHere, "some file path here", True
字段“test”应该是一个文本字段,它是一个双精度字段。我做错了什么?或者这只是一个限制,我应该转而使用Schema.ini文件(我没有使用过)

我也尝试过通过MS Access功能区控件手动导入,得到了相同的结果


以下是一个相关问题,以了解更多背景信息:

不确定Access是否以相同的方式工作,但在Excel工作表上使用ADO时,会从前八行猜测列类型,并且平局会导致选择数字类型-请参阅“关于混合数据类型的注意事项”ADO中的解决方法是确保前八行中至少有五行包含所需类型的数据(本例中为文本)。不确定这是否也适用于Access@barrowc-覆盖“前8行”规则的唯一方法是使用schema.ini文件?我认为schema.ini只适用于文本文件,但您可以尝试一下。将Excel工作表导出到CSV文件,然后将schema.ini与CSV文件一起使用可能更容易。schema.ini的引用不确定Access是否以相同的方式工作,但当对Excel工作表使用ADO时,列类型是从前八行猜测出来的,并且平局导致选择数字类型-请参阅“关于混合数据类型的注意事项”ADO中的解决方法是确保前八行中至少有五行包含所需类型的数据(本例中为文本)。不确定这是否也适用于Access@barrowc-覆盖“前8行”规则的唯一方法是使用schema.ini文件?我认为schema.ini只适用于文本文件,但您可以尝试一下。将Excel工作表导出到CSV文件,然后将schema.ini与CSV文件一起使用可能更容易。schema.ini的引用是