Я использую приведенный ниже фрагмент 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,