Очень печальные результаты от:
ws.Range(myExcelTable).CopyFromRecordset rs
' myExcelTable is a named table with assigned range
Извлечение для rs (набор записей - это выбор из всех, не имеет значения, если это сделано таким образом или с именами полей, это тот же результат)
cmdSQL2 = "SELECT * FROM " & myAccessTable
rs.Open cmdSQL2, conn
По неизвестной причине он копирует записи в excel в следующем порядке (используя pID для отображения порядка):
3-8
0-2
9-количество записей
Я пробовал несколько методов диапазона, и результат тот же.
Я их здесь "ручной бомбой", чтобы вырезать лишнюю работу, которую я выполнил в построении струн.
ws.Range("S4").CopyFromRecordset rs
ws.Range("S4:BP258").CopyFromRecordset rs
Это поведение не отображается, если таблица, которую вы копируете из Access, имеет только одно поле (столбец), а таблица в Excel имеет один заголовок (столбец), но теперь она отображается для меня в этой таблице с несколькими полями.
Мне кажется, что это происходит, когда набор записей действительно создается каким-то образом, а не на стороне "вставки" или назначения (Excel).
********************************************** ***************************
Проблема, решенная этим СО. Автором (оставит здесь, пока не будет помещена в качестве ответа):
https://stackoverflow.com/users/7296893/erik-a
Использование ORDER BY в команде sql:
cmdSQL2 = "SELECT * FROM " & myAccessTable & " ORDER BY " & primaryKey
Из непосредственного окна (удаляет переменные, чтобы вы могли лучше видеть команду для новичков в таких вещах:
SELECT * FROM County_Directory ЗАКАЗАТЬ ПО [pID]
********************************************** ***************************