Excel вставляет столбцы вместо строк при импорте данных на лист с QueryTable с RefreshStyle xlInsertEntireRows - PullRequest
0 голосов
/ 14 марта 2019

Я использую приведенный ниже фрагмент VBA для вставки CSV в лист в Excel с использованием QueryTable. Поскольку содержимое в ячейке A5 находится на пути вставляемых данных, я бы подумал, что RefreshStyle xlInsertEntireRows заставит Excel вставить дополнительные строки и вытолкнуть существующее содержимое вниз. Вместо этого он вставляет три столбца и толкает содержимое вправо. Если я опущу .RefreshStyle = xlInsertEntireRows и разрешу ему использовать значение по умолчанию xlInsertDeleteCells, результирующее поведение будет идентичным.

Это ошибка? Или я неправильно понимаю, что такое поведение xlInsertEntireRows? Или мне нужно установить дополнительные свойства, чтобы они вступили в силу?

Код:

ActiveSheet.Range("A1").Value = "Above"
ActiveSheet.Range("A5").Value = "Below"
With ActiveSheet.QueryTables.Add("TEXT;somedata.csv", ActiveSheet.Range("A3"))
    .RefreshStyle = xlInsertEntireRows
    .TextFileParseType = xlDelimited
    .TextFileCommaDelimiter = True
    .Refresh
    .SaveData = False
    .Delete
End With

somedata.csv:

AAA,111,One
BBB,222,Two
CCC,333,Three
DDD,444,Four
EEE,555,Five

Что я ожидал (используя CSV, так как не вижу поддержки таблиц в SO Markdown):

Above,,
,,
AAA,111,One
BBB,222,Two
CCC,333,Three
DDD,444,Four
EEE,555,Five
,,
Below,,

Что на самом деле генерирует фрагмент (с RefreshStyle = xlInsertEntireRows или без него):

,,,Above
,,,
AAA,111,One,
BBB,222,Two,
CCC,333,Three,Below
DDD,444,Four,
EEE,555,Five,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...