2010-04-15 4 views
0

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

  • 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).

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

Try автоматизацию с помощью функции CopyFromRecordset

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

+0

Можно ли экспортировать таблицу, содержащую поле memo? Я спрашиваю, потому что усечение полей memo в запросах является общей проблемой, если записка усечена при экспорте таблицы, это другая проблема. – Fionnuala

+0

Если памятка имеет ограничение в 512 символов, посмотрите, можно ли ее преобразовать в колонку строки в запросе и попробовать экспортировать ее. Опубликуйте свои результаты здесь. – shahkalpesh

+0

Усечение заметки происходит только в запросе, если вы делаете одну из вещей, которая усекает заметки, например, сортировка по ней. Этого можно избежать, обработав заметку чем-то вроде Left (MyMemo, 4096). –

ответ

0

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

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

+0

Спасибо, я пробовал CopyRecordset без успеха - см. Редактирование вопроса. – Joe

+0

Ahh, символы мусора могут быть vbCrLF, тогда как Excel нужен или хочет vbCr или аналогичный. Я не помню подробностей сейчас. –