|
автор: Andrew (07.11.2006 в 18:37) |
|
| ' Вот кусок кода
' RecSet- обыкновенный рекордсет типа DAO
...........
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
xlBook.Worksheets(1).Range("A4").CopyFromRecordset RecSet
До сих пор все работало на ура: создавали ексель-объект дотавляли книгу и туда копировали набор записей как таблицку- все замечательно но после выходных
вот эта строка
xlBook.Worksheets(1).Range("A4").CopyFromRecordset RecSet
выдает ошибку типа (по аглицки правда): ОШИБКА АВТОМАТИЗАЦИИ этот объект не поддерживает данный метод. Хотя на других компотах работает все пучком. Сам метод никуда не делся. Акс +EXcEL стоит 2003. Пробовал переустановить оффис с полным сносом предыдущей версии - ничего не помогает. Отчего возникла данная ошибка. Пробовал специально для этого компа прицепить Excel бибилиотеку в референсах и попытался действовать через нее - результат= 0 | |
|
| |
|
|
|
| попробуйте сделать по кускам
Set xlsSheet = xlsBook.Worksheets(1)
set xlsRange = xlsSheet.Cells("A4")
xlsRange.CopyFromRecordset RecSet
|
| |
|
| |
|
|
|
| С объектами не подерживающими автоматизацию уже сталкивался, т.е. из родного приложения (excel, word) все работает, а из стороннего (напримиер из access) нет.
победил так: (хотя может есть решение и по красивше, а меня сроки оч поджимали)
- создал шаблон документа (в моем случае word);
- создал макрос (функцию с параметрами) непосредственно в шаблоне;
- в самой функции прописал то, что не поддерживает автоматизацию из access;
- далее из access создаю документ используя вышеописанный шаблон;
- и при помощи метода runmacro выполняю эту функцию с необходимыми параметрами.
Все работает как часики
Можно конечно попробовать и программно создать функцию в документе и выполнить её, но в моем случае без шаблона все равно было не обойтись
Хотя, у меня в Office XP вот это:
Private Sub wefwefwewef()
Dim RecSet As DAO.Recordset
Dim xlApp As Object
Dim xlBook As Object
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set RecSet = CurrentDb.OpenRecordset("tab_proba", dbOpenSnapshot)
xlApp.Visible = True
xlBook.Worksheets(1).Range("A4").CopyFromRecordset RecSet
RecSet.Close
Set RecSet = Nothing
End Sub
|
проходит вполне нормально
а в office 2003 возникает та самая ошибка :/ | |
|
| |
|
|
|
| честно говоря не сталкивался, ну иногда бывали свякие проблемы когда пытался использовать selection или какой нибуть ActiveWorkbook, но если от них отказаться то все вроде работало, хотя конечно все это было до 2003.
СЕйчас проверил у себя - работает
офис 2003, win XP SP2
код скопировал от сюда, даже название таблицы такое же | |
|
| |
|
автор: Andrw (08.11.2006 в 17:56) |
|
| Дело в том что все работает на соседнем компютере (который не сервер). Такое впечатление что упала одна из сслыкок оффиса в реестре - ( которая не знаю !!!). Сегодня попробовал оффис XP, и 2000 - проблема осталась - ошибка выскакивает - т.е. excel - перестал воспримать команду ....CopyFromRecordset ..... В чем проблема ?. Хотя даже на других копах где офис 2003 Тоже самое не происходит. Хотя бы посоветуйте КАК сНЕСТИ ОФФИС - СО ВСЕМИ ПОТРОХАМИ | |
|
| |
|
|
|
| перекатать офис - не всегда помогает (точнее даже уж и не знаю когда имеет смысл его сносить)
просто проверьте ссылки на библиотеки в VBA_Editor - Tools>Referenses | |
|
| |
|
автор: Andrew (09.11.2006 в 06:17) |
|
| Да дело в том что со ссылками в референсесах все нормально. | |
|
| |
|
|
|
| На одном из форумов нашел совет перерегистрить DAO360.DLL
Regsvr32.exe "C:\Program Files\Common Files\Microsoft
Shared\DAO\DAO360.DLL" | |
|
| |
|
автор: Andrew (09.11.2006 в 10:08) |
|
| Респект и УВАЖУ}{А !!!! СПАСИБО ВЕЛИЧАЙШЕЕ !!!! ЗАРАБОТАЛО !!!! после перерегистрации .
osmor - СПАСИБО !!! . | |
|
| |