Преобразование кода Excel VBA - PullRequest
2 голосов
/ 07 октября 2011

FieldInfo в следующем коде вызывает у меня некоторые проблемы.Я пробовал онлайн-конвертеры, но они не очень хорошо справляются с этой частью кода.Я также пытался просмотреть информацию о MSDN, но не смог ее найти.Где бы я мог найти информацию о том, как преобразовать эту часть, то есть, что Array (x, y) переводит в C #?

Любая помощь приветствуется.

Ниже приведен примеркода, с которым я борюсь.

    Workbooks.OpenText Filename:= _
    "" & myZdrive & "\CI_System\Source_Files\" & myPosFile & "", Origin:= _
    xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
    xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
    Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), _
    Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2), Array(8, 1), _
    Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 2), Array(15 _
    , 1), Array(16, 1), Array(17, 2), Array(18, 2), Array(19, 2), Array(20, 2), Array(21, 2))

    Rows("1:1").Select
    Selection.Font.Bold = True
    Cells.Select
    Cells.EntireColumn.AutoFit

1 Ответ

2 голосов
/ 07 октября 2011

Код 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))

Excel text import dialog box screenshot

Если бы мне пришлосьдумаю, я бы сказал, что кто-то записал макрос, используя опцию «Фиксированная ширина», а затем изменил код VBA с DataType:=xlFixedWidth на DataType:=xlDelimited.

Если ваши входные данные на самом деле разделены, вы должныиметь возможность пропустить всю грязную FieldInfo информацию о массиве и позволить Excel обрабатывать разделители автоматически, просто установив DataType:=xlDelimited

Если вам нужно указать столбцы фиксированной ширины, ссылка что Bobort опубликовано было бы отличным местом для начала.Похоже, для FieldInfo требуется массив VBA Variant, содержащий любое количество подмассивов, каждое из которых содержит два числа: ширину столбца и тип данных.

Редактировать:

Поле Origin используется для описания формата текстового файла: Macintosh, Windows (ANSI) или MS-DOS (PC-8), выбранного в раскрывающемся меню.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...