Как автоматизировать экспорт из Access 2007 в Excel 2003 - PullRequest
0 голосов
/ 15 апреля 2010

Я хочу автоматизировать экспорт результатов запроса Access в Excel. Моя среда:

  • Access 2007
  • База данных в формате Access 2003
  • Экспорт должен быть в формате Excel 2003.

Запрос содержит столбец Memo, который может содержать до 512 символов.

Пока я пробовал следующее:

  • Запустите запрос в Access, затем скопируйте / вставьте таблицу результатов в Excel. Это работает нормально, но требует ручного шага.

  • Запустите некоторый код VBA, который экспортирует запрос, используя DoCmd.TransferSpreadsheet, следующим образом:

    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "MyQuery", "MyFile.xls"

У меня проблема в том, что код VBA усекает столбец Memo до 255 символов.

Какой самый простой способ программного экспорта в Excel без этого усечения?

В идеале я хочу «проталкивать» данные из Access в Excel, а не наоборот, т.е. я не пытался использовать «Импорт внешних данных» из Excel.

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

В ответ на комментарии и ответы пока:

Можете ли вы экспортировать таблицу, содержащую памятное поле?

Я не пробовал экспортировать таблицу, так как в любом случае это мне не поможет.

... одна из вещей, которая усекает заметки, например сортировка по ней

Запрос содержит предложение ORDER BY, поэтому результаты отсортированы (и должны быть отсортированы). Но он не отсортирован по столбцу заметок.

Этого можно избежать, обработав записку чем-то вроде Left (MyMemo, 4096).

Столбец memo в запросе уже обработан и урезан до 512 символов, используя что-то вроде "Left (Replace (MemoColumn," ... "," ... "), 512)". Так что использование Left (...), похоже, не помогает.

Попробуйте автоматизировать, используя функцию copyfromrecordset

Я пытался использовать Excel Automation с Range.CopyFromRecordSet. В этом случае более длинные поля Memo не усекаются, а экспортируются с некоторыми символами мусора в конце.

1 Ответ

0 голосов
/ 15 апреля 2010

Попробуйте автоматизировать, используя функцию copyfromrecordset. Хотя я не помню никаких проблем с 255 символами, это ограничение все еще может существовать. Модули: перенос записей в Excel с помощью автоматизации

Как только у вас будет запущен код, я бы предложил удалить ссылку на Excel с использованием позднего связывания. Позднее связывание в Microsoft Access

...