Консультация № 168378
27.05.2009, 12:30
0.00 руб.
0 2 1
Здравствуйте. Имеется запрос "ABC" в Access, этот запрос прекрасно экспортируется в xls формат через контекстное меню "Экспорт...". Требуется программно делать это действие через конструкцию

DoCmd.RunCommand acCmdExport

Но как правильно написать эту строку, чтобы экспортировался конкретный запрос/таблица в конкретный формат?

Можно конечно воспользоваться CreateObject("Excel.Application") и экспортировать через весь сопутствующий этому код, но этот вариант мне не нравится в силу медленности при большом количестве строк, поэтому интересует именно acCmdExport

Обсуждение

Неизвестный
27.05.2009, 12:49
общий
В принципе устраивает вариант:

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "ABC", "ABC.xls", True, "ABC"

но интересен всё-таки и вариант с DoCmd.RunCommand acCmdExport
Неизвестный
28.05.2009, 19:27
общий
это ответ
Здравствуйте, Loststranger.
у DoCmd конечно большие возможности, но применяя VB(A) + DAO получается тоже не плохо.
Евгений.

Приложение:
Sub toExcel()
Const sList = "ИмчСоздаваемогоЛиста"
Const sBook = "C:\ИмчСоздаваемогоФайла.xls"
Const sTabl = "Телефоны"
Dim db As DAO.Database, s As String
On Error Resume Next
Set db = CurrentDb
s = "SELECT * INTO " + sList + " IN '" + sBook + _
"'[Excel 8.0;HDR=YES;IMEX=2] FROM " + sTabl
db.Execute s 'создать
If Not Err.Number = 0 Then
s = "INSERT INTO " + sList + " IN '" + sBook + _
"'[Excel 8.0;HDR=YES;IMEX=2] SELECT * FROM " + sTabl
db.Execute s 'добавить
End If
Set db = Nothing
End Sub
4
не совсем в тему вопроса, но как вариант действительно неплохо.
Форма ответа