Код VBA, который вы разместили, выглядит как запись макроса в Excel.Например, я записал следующее, открыв простой текстовый файл (.txt):
Workbooks.OpenText Filename:= _
"C:\test.txt" _
, Origin:=xlWindows, startRow:=1, DataType:=xlDelimited, TextQualifier _
:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:= _
False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1)
Это было записано с опцией «С разделителями», установленной в первом диалоговом окне.Если вместо этого выбрать «Фиксированная ширина», а затем вручную создать количество столбцов во входных данных, запись будет выглядеть следующим образом:
Workbooks.OpenText Filename:= _
"C:\test.txt" _
, Origin:=xlWindows, startRow:=1, DataType:=xlFixedWidth, FieldInfo:= _
Array(Array(0, 1), Array(2, 1), Array(10, 1), Array(18, 1), Array(30, 1), _
Array(41, 1), Array(55, 1))

Если бы мне пришлосьдумаю, я бы сказал, что кто-то записал макрос, используя опцию «Фиксированная ширина», а затем изменил код VBA с DataType:=xlFixedWidth
на DataType:=xlDelimited
.
Если ваши входные данные на самом деле разделены, вы должныиметь возможность пропустить всю грязную FieldInfo
информацию о массиве и позволить Excel обрабатывать разделители автоматически, просто установив DataType:=xlDelimited
Если вам нужно указать столбцы фиксированной ширины, ссылка что Bobort опубликовано было бы отличным местом для начала.Похоже, для FieldInfo
требуется массив VBA Variant
, содержащий любое количество подмассивов, каждое из которых содержит два числа: ширину столбца и тип данных.
Редактировать:
Поле Origin
используется для описания формата текстового файла: Macintosh, Windows (ANSI) или MS-DOS (PC-8), выбранного в раскрывающемся меню.