Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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
Excel Workbooks.OpenText忽略FieldInfo列参数_Excel_Vba - Fatal编程技术网

Excel Workbooks.OpenText忽略FieldInfo列参数

Excel Workbooks.OpenText忽略FieldInfo列参数,excel,vba,Excel,Vba,我有下面一行来导入csv格式的文件 Workbooks.OpenText Filename:=sPath, DataType:=xlDelimited, Comma:=True, FieldInfo:=Array(Array(18, 5), Array(19, 5)), Local:=True 根据microsoft的文档,如果字段信息是分隔的,则它不必按任何顺序排列 列说明符可以是任意顺序。如果没有列 输入数据中特定列的说明符,该列为 使用常规设置解析 然而,无论我在第一个参数数组(数组(

我有下面一行来导入csv格式的文件

 Workbooks.OpenText Filename:=sPath, DataType:=xlDelimited, Comma:=True, FieldInfo:=Array(Array(18, 5), Array(19, 5)), Local:=True
根据microsoft的文档,如果字段信息是分隔的,则它不必按任何顺序排列

列说明符可以是任意顺序。如果没有列 输入数据中特定列的说明符,该列为 使用常规设置解析

然而,无论我在第一个参数
数组(数组(x,5),数组(y,5))中输入什么,excel似乎都将第一个数组视为第一列,将第二个数组视为第二列。
。因此,为了达到第18和19栏,我必须这样做,这并不漂亮:

Workbooks.OpenText Filename:=sPath, DataType:=xlDelimited, Comma:=True, _
    FieldInfo:=Array(Array(1, 1), _
    Array(2, 1), _
    Array(3, 1), _
    Array(4, 1), _
    Array(5, 1), _
    Array(6, 1), _
    Array(7, 1), _
    Array(8, 1), _
    Array(9, 1), _
    Array(10, 1), _
    Array(11, 1), _
    Array(12, 1), _
    Array(13, 1), _
    Array(14, 1), _
    Array(15, 1), _
    Array(16, 1), _
    Array(17, 1), _
    Array(18, 5), _
    Array(19, 5)), _
    Local:=True
csv文件示例数据:

fill_c1,pick_n2,po_num3,quanti4,addres5,cust_s6,color_7,size_d8,style9,shipto10,shipto11,addres12,addres13,city14,state15,zipcod16,custom17,start_18,end_da19,udford20
"52","1","2","000000001","000000000000000000000000000000","6","Z","XS","7","","","","","","","","M",20190310,20190318,"CF3"
"52","1","2","000000002","000000000000000000000000000000","6","Z","S","7","","","","","","","","M","20190310","20190318","CF3"

我能够使用
.txt
文件和
Tab=True
重现这个问题:

Workbooks.OpenText Filename:=Path & "Testfile.txt", DataType:=xlDelimited, Tab:=True, FieldInfo:=Array(Array(18, 9), Array(19, 9)), Local:=True
通过使用值9(
xlSkipColumn
),我试图省略第18列和第19列,但跳过了第1列和第2列(
Test1
Test2
):

for明确表示“列说明符可以是任意顺序的”,但这似乎是不正确的。第一个数组的第一个元素将始终是第1列,第二个数组的第一个元素将始终是第2列,并且在迭代所有数组之后,将使用常规设置解析其余的列


依我看,这看起来像个虫子。如果不是bug,那么文档就非常混乱,需要重新编写

这看起来确实像一个bug,或者文档有误导性。避免难看代码的一个解决方法是导入文本文件而不对其进行分隔,并使用
TextToColumns
拆分它。类似的事情(奇怪的是,这似乎起了作用):


这一行刚刚为我打开了CSV文件。。。一旦打开,你想做什么?这一行应该会打开CSV,但也会将第18列和第19列的格式设置为date MDY。为了使问题更加明显,您可以尝试Array(18,9),Array(19,9),它不应该导入这两列,但是它禁用的都是第1列和第2列。非常有趣-我现在正在研究这一点。顺便说一句,值5是“YMD”格式,值3是MDY。看看这篇文章,这可能有助于解释发生了什么。。。
Workbooks.OpenText Filename:=sPath, DataType:=xlDelimited, Comma:=False

Columns("A:A").TextToColumns Destination:=Range("A1"), _
    DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, _
    ConsecutiveDelimiter:=False, _
    FieldInfo:=Array(Array(18, 4), Array(19, 4))